Curried Object

The PatLet for the CurriedObject pattern:

V: How can you simplify an extremely complicated protocol?

R: Send simpler messages to an intermediary which elaborates them within its context.

The full text is in the paper called ArgumentsAndResults? [http://citeseer.nj.nec.com/107777.html].

--JamesNoble

The ChryslerComprehensiveCompensation has a Person object that can answer questions such as salaryOn: aDate . We also have DatedPerson?, which knows a Date, and which can answer corresponding questions such as salary . Is this an example of CurriedObject in your parlance?

As I understand this sort of thing, you get a curried object if you have a Person>>asOfDate: method.
I have not looked at the paper, but a CurriedObject seems to be in pretty strong opposition to the LawOfDemeter. Thoughts?
-- BillTrost

Please expand CurriedObjectViolatesDemeter

The term "curried" comes from "curried functions" which, like the pure functional language Haskell, are named after the logician Haskell B. Curry. A curried function can be "partially" applied to its arguments, returning a new function that can be applied to further arguments to calculate a result, or partially applied again if it also takes multiple arguments. (see CurryingSchonfinkelling)

A better description of curried functions and the Haskell language can be found at http://www.haskell.org .


I think James is really on to something here in what it portends for the relationship between the object paradigm -- fraught with JohnVonNeumann temporal traps -- and Alexander's TheoryOfCenters?. Currying is one of the fundamental techniques for transforming time into space, so it helps one reduce the artificial sequencing complexities of the JohnVonNeumann model into purely structural architectures that one can start to talk about using the concepts in NatureOfOrder. See http://www.bell-labs.com/~cope/Patterns/C++Report/SpaceIII-1.html -- JimCoplien.


CategoryObjectFunctionalPatterns


EditText of this page (last edited December 18, 2003) or FindPage with title or text search