In the above, a function returns a function, and the result function
is applied to a value. They demonstrate 2 things:

* The ability of the lang to have a function that returns a
function.
* The ability to apply a value (of type function) to a value.

These, are 2 of the features that is part of often sloppily termed as
â€œfunction as first class citizensâ€.

However, the above are not languages that support currying, which is a
feature that Haskell & Ocaml has.

So what is Currying?

Wikipedia article Currying said it best:

In computer science, currying, invented by Moses SchÃ¶nfinkel and
Gottlob Frege, and independently by Haskell Curry,[1] is the technique
of transforming a function that takes multiple arguments (or more
accurately an n-tuple as argument) in such a way that it can be called
as a chain of functions each with a single argument.

Note how it says â€œis the technique of ...â€.

To be more concrete, in the context of a given computer language, to
say that it support curring, is to mean that the compiler understand
the concept to certain degree. More to the point, the language is
inherently able to take a function of more than one arg and
deconstruct it to several functions of single arg.

To say that function returning function is Currying, is a confusion of
fundamental concepts.

Mathematically, currying is the concept of deconstructing a function
of multiple parameters to a composition of several functions all of
arity 1.

I like Jon, because i consider majority of his argument and
perspective are more correct or sensible in his trollish spats in
newsgroup fighting with tech geekers. But he is really a asshole, and
take every chance to peddle his book. Every mother fucking
opponitunity, he injects random opinion into discussions about how
static typing or greatness of Microsoft, which paves a way for him to
post a link to his book on Ocaml/F# or â€œstudyâ€ or â€œspeed comparisonâ€
of his site. He does this repeatedly and intentionally, about every
week for the past 2 or so years, and write in a way to provoke irate
responses. In the past 2 or 3 years, i have for 2 or so times without
his or anyone's solicitation, publically supported him in ugly
newsgroup fights (such as some serious sounding post that accuse him
of spamming or or some real life threats about network abuse).
However, in the past year as i have had some debates on language
issues with jon, i find Jon to be a complete asshole as far as his
newsgroup demeanor goes.

PS see also: A Mathematica Optimization Problem ( story of a thread
where Jon started a fight with me )

Advertisements

wrote:
> On Wed, 28 Jan 2009 13:32:29 -0800 (PST), Xah Lee <> wrote:
>
>> Function Application is not Currying
>>
>> Xah Lee, 2009-01-28
>>
>> In Jon Harrop's book Ocaml for Scientist at
>> http://www.ffconsultancy.com/products/ocaml_for_scientists/chapter1.html
>>
>> It says:
>>
>> Currying
>>
>> A curried function is a function which returns a function as its
>> result.
>>
> Curry, is that like chicken soup or some Indian mash?
>
"Currying" is named after someone called Curry. The 'correct' term is
"partial parameterisation", which explains why it's often called
"Currying" instead!
> Why ? How about returning an index number into an array of function pointers
> as handlers from packet data?
>
> Oh, thats network communications.
>

That's correct, Xah. Currying is a special case of function application.
A currying function is applied to some other function, and returns function
that has fewer arguments.

In some languages, you don't see the currying function. It's invisibly
performed whenever you forget an argument. Hit a three argument function with
only two arguments, and you don't get a nice ``insufficient arguments in
function call'' error, but the call is diverted to the currying function, which
gives you back a function of one argument, which you can then call with the
missing argument to compute the original function.
> Xah Lee, 2009-01-28
>
> In Jon Harrop's book Ocaml for Scientist at
> http://www.ffconsultancy.com/products/ocaml_for_scientists/chapter1.html

Figures you'd be reading this. Learning anything?
> It says:
>
> Currying
>
> A curried function is a function which returns a function as its
> result.
>
> LOL. That is incorrect.

Russ P. wrote:
> On Jan 28, 1:32Â pm, Xah Lee <> wrote:
>> Function Application is not Currying
>>
>> Xah Lee, 2009-01-28
>>
>> In Jon Harrop's book Ocaml for Scientist
>> athttp://www......./chapter1.html
>>
>> It says:
>>
>> Currying
>>
>> A curried function is a function which returns a function as its
>> result.
>>
>> LOL. That is incorrect.
>
> What does that have to do with the price of bananas in Costa Rica?

Xah Lee does this stuff in 4 or 5 groups he's decided to post random
things to. They rarely have any relevance or substance, just his
personal thoughts. He liked to provoke arguing and tell everyone he's
a genius in his own mind. It's best to just filter his posts out like
most of us have already done. I don't know what group you're seeing
his post in, but he bugs us in the Perl group all the time, cross
posting things that have nothing to do with Perl (same with his cross
posts to Python, too).
--
Tim Greer, CEO/Founder/CTO, BurlyHost.com, Inc.
Shared Hosting, Reseller Hosting, Dedicated & Semi-Dedicated servers
and Custom Hosting. 24/7 support, 30 day guarantee, secure servers.
Industry's most experienced staff! -- Web Hosting With Muscle!

Jon Harrop wrote:
> I had hoped someone else would correct you but they haven't. So...

The lack of replies aren't about anyone correcting him or not, it's that
the guy just posts anything he can to spamvertize his site and tell
everyone how brilliant he thinks he is. It's just a method he uses to
try and feel important and also get people to his site (and for the
search engines to rank it higher). He's a known troll and spammer in a
lot of groups due to this. The guy rarely has anything relevant to the
groups he posts to. Most people I know of have come to just filter out
his posts.
--
Tim Greer, CEO/Founder/CTO, BurlyHost.com, Inc.
Shared Hosting, Reseller Hosting, Dedicated & Semi-Dedicated servers
and Custom Hosting. 24/7 support, 30 day guarantee, secure servers.
Industry's most experienced staff! -- Web Hosting With Muscle!

Share This Page

Welcome to The Coding Forums!

Welcome to the Coding Forums, the place to chat about anything related to programming and coding languages.

Please join our friendly community by clicking the button below - it only takes a few seconds and is totally free. You'll be able to ask questions about coding or chat with the community and help others.
Sign up now!