From: Xah Lee
Subject: WHAT is Currying?!?
Date: 
Message-ID: <1187373224.648092.9470@q4g2000prc.googlegroups.com>
Xah Lee wrote:
«
The Concepts and Confusions of Prefix, Infix, Postfix and Fully
Functional Notations
http://xahlee.org/UnixResource_dir/writ/notations.html
...
For another example, suppose Deriv is a function that takes a function
f and returns a function g, and we want to apply g to a variable x.
In lisp, we would write “((Deriv f) x)”. In Mathematica, we would
write “Deriv[f][x]”.»

Dr Jon D Harrop wrote:
«
It is probably worth noting that currying is comparatively uncommon in
both
Lisp and Mathematica. The difference between the syntaxes is fairly
small:
  ((f a) b)  Lisp
  f[a][b]    Mathematica
  f a b      ML
»

There are few things i like to say about currying, and your comment.

         *         *         *

I don't like the term “currying”. It smacks of academic mumbo jumbo.
The primary fuel of its use among programers, is its obscurism. It
makes the users of the term looks bigger then than they are. (not
accusing you in anyway though)

As you know, there's the concept of of turning a function with
multiple parameters into a function with fewer parameters. This
concept as a theory, and in particular as a actual implementation of
it in a computer language as a feature, needs a name. And, the term
“currying” has been adopted. (the particular reason for the word, as
we know, is from the mathematician Haskell Curry)

If we were to make a general judgement on the naming of scientific/
technical concepts (as a criticism about terminology), then, i think
terms based on people's names are not to be preferred. (primarily
because it imparts no information about what it means, secondarily
because often it has nothing to do with the person (i.e. the named is
often not the primary contributor of the theory/concept although it
many cases it is meant to be and is)) Further, i nomenclature has
critical importance, in education, effciency of communication, and in
how something is perceived.

(Richard Stallman has popularly made this point clear for non-
scientific terms, mostly regarding Linux and his ideologoy about
software in society (e.g. GNU/Linux, “Intellectual Property”, “Content
Management System”/“Website Revision System”, “digital right
management”/“ digital restrictions management” ... etc. (however,
himself, in my opinion, have hijacked terms intentionally or
unintentionally for his gain (e.g. Free, Hacker (anyone who is gonna
write to me about the terms “Free” or “Hacker” automatically gets a
moronic tech geeker moniker in my mind, unless, you have a Ph D in
English or philosophy or human animal ethology or history or similar
fields)))))

         *         *         *

Now, in the above, i expressed a few things:

• What Currying means.
• It justification in having a name.
• I do not like this terminology.
• some opinions about terminology

But actually, i wanted to speak about another issue, and that is: how
the term Currying is often used by high-powered tech geekers (such as
the lispers and functional programers) to simply mean applying a
function that is returned by a function, and this subtle but different
meaning, generates confusion.

For example, in the following:

  ((f a) b)  Lisp
  f[a][b]    Mathematica
  f a b      ML

Are they Currying? or are they just applying a return value of a
function?

The significance of the term “currying”, usually lies in the context
of language design in particular that the language is such that its
compiler can break apart a function of multiple parameters into a
function with less.

So, in Mathematica, form like this f[a][b] isn't “currying” in anyway.
It simply means applying the value of f[a] to b.

Similarly, i do not think currying makes any sense in lisp. (i know
Emacs Lisp and have familiar with literature of scheme)

         *         *         *

In Mathematica, forms like f[a][b] or f[a1,a2,...][b1,b2,...]... etc
are actually used a lot in Mathematica. Both in build-in functions as
well as in third-party products. Most notable example is the function
named “Derivative”. As a idiom, it is used in just about every
sufficiently complex and well-designed third-party programs. It is
probably in all Mathematic programing books.

Such a form can be defined using pattern matching.
So for example,

  f[a_][b_] := a+b;

In this case, f[x] won't even be defined.

However, often, f is considered as a function that returns a function.
So, f[x] returns the function that adds a to it, i.e. in lisp: (lambda
(x) (+ a x)). In this case, f can be defined using pattern matching,
or not using pattern matching. Example:

f[x_]:= a+x;            (*using pattern matching*)

f=Function[x,a+x]        (*without using pattern matching*)

In all 3 cases above, f[a][b] evaluates to a+b.

In the over one thousand pages of the Mathematica Book (its official
manual), covering hundreds of advanced math functions and
computations, one will find no menitioning of Currying or its concept
whatsoever. (and this is in supreme contrast to the common programer
and academics obfuscation and elitism of throwing out lambdas,
currying, liiinda-meryer types, garbage collection, tail-recursion,
and other shit.)

         *         *         *

(Note in wikipedia:
http://en.wikipedia.org/wiki/Currying
it defines currying as:
«In computer science, currying or Schönfinkelisation[1] is the
technique of transforming a function that takes multiple arguments
into a function that takes a single argument (the other arguments
having been specified by the curry).»
Note how it says it is a “technique”.
)

(Note: I'm not familiar with Mathematica 6, which is a major release
made few months ago that contains fundamentally new features. All the
statements about Mathematica above applies to version 4 or before 6.)

Further readings:

• What are OOP's Jargons and Complexities?
http://xahlee.org/Periodic_dosage_dir/t2/oop.html

• Math Terminology and Naming of Things (rambling quality)
http://xahlee.org/Periodic_dosage_dir/t2/math_namings.html

• Jargons of Info Tech Industry (rambling quality)
http://xahlee.org/UnixResource_dir/writ/jargons.html

  Xah
  ···@xahlee.org
∑ http://xahlee.org/

From: Kaz Kylheku
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <1187378896.436070.203940@o80g2000hse.googlegroups.com>
On Aug 17, 10:53 am, Xah Lee <····@xahlee.org> wrote:
> But actually, i wanted to speak about another issue, and that is: how
> the term Currying is often used by high-powered tech geekers (such as
> the lispers and functional programers) to simply mean applying a
> function that is returned by a function, and this subtle but different
> meaning, generates confusion.

You have a point in that this is incorrect. Currying, named after
Haskell Curry, has to do with transforming a function of N arguments
into a function of N-K arguments, by fixing the values of K arguments.

What the above describes is something else. But I don't think that
``high powered'' people who know what they are talking about would
misuse the term in that way.

I'm a low-powered hacker and don't even know what I'm talking about
half the time, yet I still know what currying is.
From: Xah Lee
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <1187416001.014074.97310@q4g2000prc.googlegroups.com>
... just to have some fun, let me make a assertion (fun aside, i
seriously think it true):

The Haskell community, would benefit greatly (say, as tripling its
popularity or number of users), by forbidding literature associated
with its teaching, of using the term Currying.

This is something that can be done, and in my opinion, trivially.
However, of course it will never happens because haskell is too much
tied to academics and social and human issues regarding terminology or
the use of English, is not likely to change...

As to what would be better term for Currying... umm... perhaps Arity
Shrink, Arity Collapsing, parameter reduction ...

See also:
Politics and the English Language by George Orwell
http://xahlee.org/p/george_orwell_english.html

  Xah
  ···@xahlee.org
∑ http://xahlee.org/

--------
On Aug 17, 10:53 am,XahLee<····@xahlee.org> wrote:

...
But actually, i wanted to speak about another issue, and that is: how
the term Currying is often used by high-powered tech geekers (such as
the lispers and functional programers) to simply mean applying a
function that is returned by a function, and this subtle but different
meaning, generates confusion.
...
--------
On Aug 17, 12:28 pm, Kaz Kylheku <········@gmail.com> wrote:

You have a point in that this is incorrect. Currying, named after
Haskell Curry, has to do with transforming a function of N arguments
into a function of N-K arguments, by fixing the values of K arguments.

What the above describes is something else. But I don't think that
``high powered'' people who know what they are talking about would
misuse the term in that way.

I'm a low-powered hacker and don't even know what I'm talking about
half the time, yet I still know what currying is.
From: Chris Smith
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <MPG.2130a1386d771e639898dd@news.altopia.net>
Xah Lee <···@xahlee.org> wrote:
> The Haskell community, would benefit greatly (say, as tripling its
> popularity or number of users), by forbidding literature associated
> with its teaching, of using the term Currying.

Even when teaching the meaning of the standard library routines "curry" 
and "uncurry"?

-- 
Chris Smith
From: Sacha
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <SMCxi.59053$No5.1420516@phobos.telenet-ops.be>
Xah Lee wrote:
> .... just to have some fun, let me make a assertion (fun aside, i
> seriously think it true):

...

It's a good thing to put a name on concepts, like with programming, this 
allows to think at a higher level. The "curry" and "currying" forms are 
concise. You don't need to know anything about the mathematician to 
understand the concept.

I don't know much about English, but in French we have lots of usual 
names directly coming from the names of real persons, for such things as 
common as a trash bin (poubelle), or as deadly as a guillotine, and 
people are using those words without an afterthought.

Sacha
From: Dimiter "malkia" Stanev
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <5iosl1F3qgvolU1@mid.individual.net>
Other examples of using names:

http://www.iht.com/articles/2003/01/03/edtharoor_ed3_.php

Paparazzi comes from the "the name of a pavement photographer in 
Federico Fellini's 1960 classic movie 'La Dolce Vita.'"

Machiavellian - "An unprincipled and dangerous schemer might be called 
Machiavellian — a reference to a more venerable Italian, the Florentine 
political philosopher Niccolo Machiavelli (1469-1527)"

Boycott - "Captain Charles Cunningham Boycott (1832-1897), who was the 
first victim of a campaign of ostracism begun by the Irish nationalist 
leader Charles Stuart Parnell in 1880. (It worked: Boycott left Ireland 
within a year, and new land tenure legislation was passed.)"

And many more - Guillotin, Sandwitch

And then programming languages - Pascal, Ada, etc.

Sacha wrote:
> Xah Lee wrote:
>> .... just to have some fun, let me make a assertion (fun aside, i
>> seriously think it true):
> 
> ....
> 
> It's a good thing to put a name on concepts, like with programming, this 
> allows to think at a higher level. The "curry" and "currying" forms are 
> concise. You don't need to know anything about the mathematician to 
> understand the concept.
> 
> I don't know much about English, but in French we have lots of usual 
> names directly coming from the names of real persons, for such things as 
> common as a trash bin (poubelle), or as deadly as a guillotine, and 
> people are using those words without an afterthought.
> 
> Sacha
From: verec
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <46c6fc5b$0$642$5a6aecb4@news.aaisp.net.uk>
On 2007-08-18 14:48:34 +0100, Sacha <····@address.spam> said:

> I don't know much about English, but in French we have lots of usual 
> names directly coming from the names of real persons, for such things 
> as common as a trash bin (poubelle), or as deadly as a guillotine, and 
> people are using those words without an afterthought.

When was the last time you used "guillotine" without an afterthought?
Hasn't France death penalty been outlawed some good 26+ years ago?
--
JFB
From: Sacha
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <7JDxi.59129$X4.1170710@phobos.telenet-ops.be>
verec wrote:
> On 2007-08-18 14:48:34 +0100, Sacha <····@address.spam> said:
> 
>> I don't know much about English, but in French we have lots of usual 
>> names directly coming from the names of real persons, for such things 
>> as common as a trash bin (poubelle), or as deadly as a guillotine, and 
>> people are using those words without an afterthought.
> 
> When was the last time you used "guillotine" without an afterthought?
> Hasn't France death penalty been outlawed some good 26+ years ago?
> -- 
> JFB
> 

I don't know, I'm from belgium !

=P

Sacha
From: Joachim Durchholz
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <fa6p8l$4sc$1@online.de>
Xah Lee schrieb:
> The Haskell community, would benefit greatly (say, as tripling its
> popularity or number of users), by forbidding literature associated
> with its teaching, of using the term Currying.
 >
 > This is something that can be done, and in my opinion, trivially.

Technically that would be easy, but politically, it's impossible to ban 
certain words. To establish a working ban, you'd need a censoring 
machinery, and the side effects would eclipse any good that this could 
ever do.

All you can do is to propose a less intimidating nomenclature.

> However, of course it will never happens because haskell is too much
> tied to academics and social and human issues regarding terminology or
> the use of English, is not likely to change...

No, it won't happen because censoring free speech doesn't work. Such a 
mechanism would immediately attract those who didn't achieve greatness 
and saw a post in a censoring office as a way to achieve a position of 
power.
You can easily imagine what kind of decision an office with such censors 
would make...

> As to what would be better term for Currying... umm... perhaps Arity
> Shrink, Arity Collapsing, parameter reduction ...

Better. Far better.

Regards,
Jo
From: Paul Rubin
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <7xk5rsaim2.fsf@ruckus.brouhaha.com>
Joachim Durchholz <··@durchholz.org> writes:
> > popularity or number of users), by forbidding literature associated
> > with its teaching, of using the term Currying.
>  > This is something that can be done, and in my opinion, trivially.
> Technically that would be easy, but politically, it's impossible to
> ban certain words. To establish a working ban, you'd need a censoring
> machinery, and the side effects would eclipse any good that this could
> ever do.

But it's been done:

http://saxophone.jpberlin.de/MonadTransformer?source=http%3A%2F%2Fwww%2Ehaskell%2Eorg%2Fhaskellwiki%2FCategory%3AMonad
From: David Golden
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <TvCxi.21609$j7.396794@news.indigo.ie>
Joachim Durchholz wrote:

> Better. Far better.
> 

When cooking a curry, you need a bunch of ingredients. You throw some
stuff into the pot.  You now have something that when you add
more ingredients, makes more a more complicated/closer-to-complete
curry.  You can separate making a curry into a whole heap of
add-a-thing-to-the-pot operations.

Okay that's pretty loose, and if anything probably encourages 
currying/partial-application confusion, but still, the name 
"curry" always appealed to me for that reason.













  
From: Pascal Bourguignon
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <87643caawq.fsf@thalassa.informatimago.com>
Joachim Durchholz <··@durchholz.org> writes:

> Xah Lee schrieb:
>> The Haskell community, would benefit greatly (say, as tripling its
>> popularity or number of users), by forbidding literature associated
>> with its teaching, of using the term Currying.
>>
>> This is something that can be done, and in my opinion, trivially.
>
> Technically that would be easy, but politically, it's impossible to
> ban certain words. To establish a working ban, you'd need a censoring
> machinery, and the side effects would eclipse any good that this could
> ever do.

You could as well ban the word "Xah Lee" and xahleeing, like google
tries to ban googling...

Please people, stop xahleeing! 


-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

NOTE: The most fundamental particles in this product are held
together by a "gluing" force about which little is currently known
and whose adhesive power can therefore not be permanently
guaranteed.
From: Pascal Bourguignon
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <87vebbw7hf.fsf@thalassa.informatimago.com>
Cesar Rabak <·······@yahoo.com.br> writes:

> Pascal Bourguignon escreveu:
> [snipped]
>
>> Anybody complaining about "currying" or any other term (jargon in
>> general) must be very weak at abstraction...
>> Hey Xah Lee!  Wake up!  There are more than 250,000 words in
>> English!
>> 
>
> It seems you've been very conservative! there are 994,638 words as
> estimated by http://www.languagemonitor.com/
>
> Almost a million!

It's the estimation of the Oxford Experts.
http://www.askoxford.com/asktheexperts/faq/aboutenglish/numberwords?view=uk


-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

NOTE: The most fundamental particles in this product are held
together by a "gluing" force about which little is currently known
and whose adhesive power can therefore not be permanently
guaranteed.
From: George Neuner
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <c3uhc3lc9t0j8k57posrv08l4jiio66k39@4ax.com>
On Sun, 19 Aug 2007 23:16:12 +0200, Pascal Bourguignon
<···@informatimago.com> wrote:

>Cesar Rabak <·······@yahoo.com.br> writes:
>
>> Pascal Bourguignon escreveu:
>>
>>> There are more than 250,000 words in English!
>>
>> It seems you've been very conservative! there are 994,638 words as
>> estimated by http://www.languagemonitor.com/
>>
>> Almost a million!
>
>It's the estimation of the Oxford Experts.
>http://www.askoxford.com/asktheexperts/faq/aboutenglish/numberwords?view=uk

Most words are little used.  Nevertheless, I find the estimate of
250,000 words used to be on the high side.  I've read that the average
person has a working vocabulary of only 2000-3000 words and a passive
vocabulary (words they know but don't often use) of 15000-20000 words.

George
--
for email reply remove "/" from address
From: Aatu Koskensilta
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <87ps1imqoy.fsf@huxley.huxley.fi>
George Neuner <········@comcast.net> writes:

> Most words are little used.  Nevertheless, I find the estimate of
> 250,000 words used to be on the high side.  I've read that the average
> person has a working vocabulary of only 2000-3000 words and a passive
> vocabulary (words they know but don't often use) of 15000-20000 words.

Something in that ballpark seems to be the usually quoted
figure. Incidentally, Joyce's _Ulysses_ reportedly uses 30000 distinct
words.

-- 
Aatu Koskensilta (················@xortec.fi)

"Wovon man nicht sprechen kann, daruber muss man schweigen"
 - Ludwig Wittgenstein, Tractatus Logico-Philosophicus
From: Andrew Reilly
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <pan.2007.08.21.03.30.05.479502@areilly.bpc-users.org>
On Mon, 20 Aug 2007 13:43:41 +0300, Aatu Koskensilta wrote:

> George Neuner <········@comcast.net> writes:
> 
>> Most words are little used.  Nevertheless, I find the estimate of
>> 250,000 words used to be on the high side.  I've read that the average
>> person has a working vocabulary of only 2000-3000 words and a passive
>> vocabulary (words they know but don't often use) of 15000-20000 words.
> 
> Something in that ballpark seems to be the usually quoted
> figure. Incidentally, Joyce's _Ulysses_ reportedly uses 30000 distinct
> words.

Shakespeare is reputed to have _made_up_ 20000 of the words that he used.

The point that Xah is missing is that words are just symbols for concepts,
and they mean precicely what their authors intend them to mean.  There is
very seldom any or much significance in the form of the symbol itself. 
Certainly, one can write a little story, using more common words, every
time you wish to convey a concept, but that may well be *less* accurate
and meaninful than just using the word/symbol that has been accepted to
correspond to the concept.  So you encounter words that you haven't seen
before, or haven't seen used in a particular context before: that's what
context, dictionaries and the literature are for.

But of course you all already knew that.  Please pardon the rant.

At least I've wasted less than the hour that Xah spent on his drivel, on
this message...

-- 
Andrew
From: Tamas Papp
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <87d4xhnhnc.fsf@pu100877.student.princeton.edu>
Andrew Reilly <···············@areilly.bpc-users.org> writes:

> The point that Xah is missing is that words are just symbols for concepts,

(pushnew 'words-are-just-symbols-for-concepts *points-that-Xah-is-missing*)

I am afraid that we will exhaust the heap soon.

Tamas
From: Cesar Rabak
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <faasfn$nen$1@aioe.org>
Pascal Bourguignon escreveu:
> Cesar Rabak <·······@yahoo.com.br> writes:
> 
>> Pascal Bourguignon escreveu:
>> [snipped]
>>
>>> Anybody complaining about "currying" or any other term (jargon in
>>> general) must be very weak at abstraction...
>>> Hey Xah Lee!  Wake up!  There are more than 250,000 words in
>>> English!
>>>
>> It seems you've been very conservative! there are 994,638 words as
>> estimated by http://www.languagemonitor.com/
>>
>> Almost a million!
> 
> It's the estimation of the Oxford Experts.
> http://www.askoxford.com/asktheexperts/faq/aboutenglish/numberwords?view=uk
> 
> 
Odd! The number of entries for Merrian-Webster is "more than 470,000" 
http://unabridged.merriam-webster.com/noauth/mwlogin.php?return=/

With more than a clock instead of knowing the time you get a doubt!
From: George Neuner
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <nbgic315jj575nu5gf51ua4g6114uus5ke@4ax.com>
On Sun, 19 Aug 2007 23:16:12 +0200, Pascal Bourguignon
<···@informatimago.com> wrote:

>Cesar Rabak <·······@yahoo.com.br> writes:
>
>> Pascal Bourguignon escreveu:
>> [snipped]
>>
>>> There are more than 250,000 words in English!
>>
>> It seems you've been very conservative! there are 994,638 words as
>> estimated by http://www.languagemonitor.com/
>>
>> Almost a million!
>
>It's the estimation of the Oxford Experts.
>http://www.askoxford.com/asktheexperts/faq/aboutenglish/numberwords?view=uk

The unabridged OED set in my local large library comprises 17 volumes
and claims definitions for some 950,000+ words.  There is a companion
Oxford slang dictionary which comprises 20 volumes and claims
definitions for 1.1 million words (there is necessarily some overlap).

I would guess the estimate at askoxford is for the "normal" dictionary
which purports to deal only with words actively in use.

George
--
for email reply remove "/" from address
From: Jon Harrop
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <13cigcjb6dmvb01@corp.supernews.com>
Cesar Rabak wrote:
> Pascal Bourguignon escreveu:
>> Hey Xah Lee!  Wake up!  There are more than 250,000 words in English!
> 
> It seems you've been very conservative! there are 994,638 words as
> estimated by http://www.languagemonitor.com/
> 
> Almost a million!

Would this be including English words like homage, moron and
Sch�nfinkelization? ;-)

-- 
Dr Jon D Harrop, Flying Frog Consultancy
OCaml for Scientists
http://www.ffconsultancy.com/products/ocaml_for_scientists/?usenet
From: George Neuner
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <4jkjc39d7v23u5tjfv3gged7nc5mnobd0f@4ax.com>
On Mon, 20 Aug 2007 08:12:56 +0100, Jon Harrop <···@ffconsultancy.com>
wrote:

>Cesar Rabak wrote:
>> Pascal Bourguignon escreveu:
>>> Hey Xah Lee!  Wake up!  There are more than 250,000 words in English!
>> 
>> It seems you've been very conservative! there are 994,638 words as
>> estimated by http://www.languagemonitor.com/
>> 
>> Almost a million!
>
>Would this be including English words like homage ...

That depends on whether you typed "o maj" or "hom ij" - I can't tell
by looking.  One is French, the other is French.  Both are English.

George 
--
for email reply remove "/" from address
From: Florian Kreidler
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <46c60a26$1@news.arcor-ip.de>
Xah Lee <···@xahlee.org> schrieb:
>
> I don't like the term ?currying?. It smacks of academic mumbo jumbo.
> The primary fuel of its use among programers, is its obscurism. It
> makes the users of the term looks bigger then than they are. (not
> accusing you in anyway though)

You might want to say "sch�nfinkeln," as we do here in Germany.
From: Joachim Durchholz
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <fa54n9$lgd$2@online.de>
Florian Kreidler schrieb:
> You might want to say "sch�nfinkeln," as we do here in Germany.

Only humorously, if at all.
Well, some teachers pass on unusual terms in a vain attempt to establish 
a terminology that they think would be better.

Regards,
Jo
From: Jon Harrop
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <13ch7hh4vdh31be@corp.supernews.com>
Xah Lee wrote:
> However, often, f is considered as a function that returns a function.
> So, f[x] returns the function that adds a to it, i.e. in lisp: (lambda
> (x) (+ a x)). In this case, f can be defined using pattern matching,
> or not using pattern matching. Example:
> 
> f[x_]:= a+x;            (*using pattern matching*)
> 
> f=Function[x,a+x]        (*without using pattern matching*)
> 
> In all 3 cases above, f[a][b] evaluates to a+b.

Interestingly, this is equivalent to:

  (defun f (x) `(+ a ,x))
  (defvar f (lambda (x) `(+ a ,x)))

and that makes Mathematica more of a Lisp 2 rather than a Lisp 1.

> In the over one thousand pages of the Mathematica Book (its official
> manual), covering hundreds of advanced math functions and
> computations, one will find no menitioning of Currying or its concept
> whatsoever.

How many functions that return functions are described in the Mathematica
book? I certainly made very sporadic use of currying in my Mathematica work
and only recently stumbled upon a description of it in the Mathematica book
(for 5.1) on page 1045:

  Use any applicable transformation rules that you have defined for h[e1,
e2, ...] or for h[...][...].

-- 
Dr Jon D Harrop, Flying Frog Consultancy
OCaml for Scientists
http://www.ffconsultancy.com/products/ocaml_for_scientists/?usenet
From: Markus E L
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <ed643bi0mk.fsf@hod.lan.m-e-leypold.de>
Currying, Xah, is the art of making a curry.

Xah Lee wrote:

> I don't like the term “currying”. It smacks of academic mumbo jumbo.

Mumbo jumbo like "monad", "function", "closure", "protocol",
"computer" (hell, man, a computer is a smart lady who performed
numerical calculations often with the aid of a mechanical calculating
device), "automobile" (bloody greek, that, call it a self-mover),
"pistol" (actually a small knive or dagger which can be concealed in a
person's clothing).

We must rename all this things, because the words are already taken by
other meaning. And we aren't allowed to create new synthetic word,
that would be academic mumbo jumbo. We should all be prepared from now
on for meetings taking approximate 2-3 times longer from all this
"partially applying a function by fixing some of its arguments", "the
function obtained from another fcuntion by partially ...", "the
machine that can calculate or control other hardware", ...

Regards -- Markus
From: Xah Lee
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <1187607508.444164.109850@i38g2000prf.googlegroups.com>
Dear moron Ingo Menger,

In this thread, i posit some thoughts. One of which, is about how the
naming of technical concepts, would be better served, by choosing a
name that conveys's the meaning, instead of simply by the scientist's
name.  (e.g. Cartesian coordinate, Abelian group, Fourier transform,
Mobius transformation, Green's theorem, Schwartzian transform,
Reidemeister move, Euclidean geometry, Hilbert space, ..., and of
course, Currying.)

Here's the complete excerpt of my message on the part where i
expressed this opinion:

«
I don't like the term “currying”. It smacks of academic mumbo jumbo.
The primary fuel of its use among programers, is its obscurism. It
makes the users of the term looks bigger then than they are. (not
accusing you in anyway though)

As you know, there's the concept of of turning a function with
multiple parameters into a function with fewer parameters. This
concept as a theory, and in particular as a actual implementation of
it in a computer language as a feature, needs a name. And, the term
“currying” has been adopted. (the particular reason for the word, as
we know, is from the mathematician Haskell Curry)

If we were to make a general judgement on the naming of scientific/
technical concepts (as a criticism about terminology), then, i think
terms based on people's names are not to be preferred. (primarily
because it imparts no information about what it means, secondarily
because often it has nothing to do with the person (i.e. the named is
often not the primary contributor of the theory/concept although it
many cases it is meant to be and is)) Further, i nomenclature has
critical importance, in education, efficiency of communication, and in
how something is perceived.

(Richard Stallman has popularly made this point clear for non-
scientific terms, mostly regarding Linux and his ideology about
software in society (e.g. GNU/Linux, “Intellectual Property”, “Content
Management System”/“Website Revision System”, “digital right
management”/“ digital restrictions management” ... etc. (however,
himself, in my opinion, have hijacked terms intentionally or
unintentionally for his gain (e.g. Free, Hacker (anyone who is gonna
write to me about the terms “Free” or “Hacker” automatically gets a
moronic tech geeker moniker in my mind, unless, you have a Ph D in
English or philosophy or human animal ethology or history or similar
fields))))) »

Now, one of the first response to this message, is a mockery, arguing
that my opinion is unfounded. I quote below:

“David Formosa (aka ? the Platypus)” wrote:
«
Likewise I would like to complain about the use of the word "curry" in
cooking.  Rather then a self explanatory name we use a corrupted loan
word from one of the meany indian languages.  A word that in its
orginal language doesn't mean what we use the english work to mean.  I
propose we ban the use of the word "curry" and propose that we as an
alternative use the phrase "spicy Indian style sauce".

Also I think that the terminology around the naming of spades is over
complex (meany people get spades and shovals confused for example).  I
propose an OO naming soultion of tool.dig.manual.pointed
»

This person, judged on this response, i deem a moron. However, there
are so many moronic newsgroup posts, that i could not possible reply
to each.

Now, it is to my displeasure, that 3 responses followed this mockery.
They are all one-liner responses, 2 of which kinda furthered the pun
silliness in a meaningless way. The 3rd response is from Moron Ingo
Menger. In this guy's one-liner states: “You hit the nail on its
head.”. In a unambiguous way, it indicated that the Platypus's mockery
is right on, implying my opinion stupid.

I would like to do some explanation to these morons, whoever you are,
because in my educational experience, i learned that, in order to
teach something, doesn't matter how obvious it is to me, i need to be
clear, precise, and very DETAILED, giving full examples, supports,
references. Essentially, the degree of effectiveness of teaching by
writing, is almost asymptotic to writing a book. If i write sloppily,
in a blog, then it will have effect just like that. But if i take the
time (tremendous time), to formulate it, use proper writing styles,
edit it, give detailed explanations, examples, gather references,
format the text properly, and so on, like a formal publication, then
as such, it makes a much larger impact on the readers. In short, i
could not assume a very learned audience that have special knowledge
in the areas of my topic. Of course, those who do, will find my
opinion considerable, and the informal and short presentation
sufficient for presenting a opinion, but the vast majority of
newsgroup readers (say, 95%), will respond by drivel.

«surprise to myself! how did i already wrote so much and getting off
tangent!! and becoming a general treatise and yet not started to
explain the main subject of this message yet! Fuck Jesus!»

Ok, now back to terminology. Here, i explain briefly, the inanity of
the mockery.

I will now take some reasonable assumptions about the mockery, since
it is short, and one cannot accurately infer what's the author's real
meanings.  The basis of the mockery is that, there are many words used
in natural languages that are fucked up in one way or another that has
little connection to what the word means. The above sentence is
probably nonsensical, but stupid writing forces one to give
nonsensical interpretations. Alternatively, perhaps the mockery
writer's intention was that, it is hopeless to change the established
scientific jargons, or the establishment, or its habits... This would
be a valid opinion, albeit mundane. If the mocker do mean this line of
thought, he failed to embedded it.

Ummm... looks like i wasted 1 hour. Fucking newsgroup morons rob my
time.

  Xah
  ···@xahlee.org
∑ http://xahlee.org/
From: John Thingstad
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <op.txcus9zhpqzri1@pandora.upc.no>
P� Mon, 20 Aug 2007 12:58:28 +0200, skrev Xah Lee <···@xahlee.org>:


> Ummm... looks like i wasted 1 hour. Fucking newsgroup morons rob my
> time.

Wise words.. If you would just follow them.
If you just program for a while instead of making statements like CGI is  
dead.
(You might as well say sockets are dead because you dont see any  
open-socket in your code.)
Etc.. etc..
From: Ingo Menger
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <1187704978.035491.163490@50g2000hsm.googlegroups.com>
On 20 Aug., 12:58, Xah Lee <····@xahlee.org> wrote:
> Dear moron Ingo Menger,
>
> In this thread, i posit some thoughts. One of which, is about how the
> naming of technical concepts, would be better served, by choosing a
> name that conveys's the meaning,

And here is the first error in your thought.
Or please, can you tell me how the name "oven" conveys the meaning of
an artifact made of stone or iron, that serves to heat a room or to
cook food or both?
The truth is that most words do not convey any meaning before the
meaning has been learned.

> I don't like the term "currying".

This, indeed, is a sufficient reason for using it even more, I'd
think. Insofar, your postings are quite valuable: One almost cannot go
wrong by doing just the opposite of what you were suggesting.

> It smacks of academic mumbo jumbo.

Your anti-academic attitude is so poor and ludicrous, I am not going
to discuss it.

> If we were to make a general judgement on the naming of scientific/
> technical concepts (as a criticism about terminology), then, i think
> terms based on people's names are not to be preferred.

You think so. Ok. And other people don't think so.

> (primarily
> because it imparts no information about what it means,

This is not an argument, since this holds for almost every word.
Besides, more often than not, a particular person is well known for
one single, outstanding contribution to a field of science or
technology, so everybody not absolutely unfamiliar with that field
knows very well what the meaning is.
Sometimes, this goes so far that it is no longer well known that the
word is actually a name.

> secondarily
> because often it has nothing to do with the person (i.e. the named is
> often not the primary contributor of the theory/concept although it
> many cases it is meant to be and is))

So what? It suffices that people associated the concept or whatever
with his name for whatever reason.


> I would like to do some explanation

We know already. Can't you ever imagine, that your lengthy paragraphs
are nothing new to any decent reader of c.l.f.?

> «surprise to myself! how did i already wrote so much and getting off
> tangent!! and becoming a general treatise and yet not started to
> explain the main subject of this message yet! **** *****!»

Apart from the brazen affront against christians I have made
unreadable in this citation, this is a remarkable piece of self-
knowledge!
But you should not only ask this question to you, but simply refrain
from posting once you learn that you wrote too much. Go ahaead on this
path of enlightenment!

> The basis of the mockery is that, there are many words used
> in natural languages that are fucked up in one way or another that has
> little connection to what the word means.

No. The basis is that a word per se does not mean anything. If this
were not so, everybody could read and understand a russian newspaper.
But, alas, only those that have learned what the russian words are
meant to mean are able to do so.
There is, for example, the word "da". Intepreted as a russian word, it
means "yes". Interpreted as german word, it means "there". Interpreted
italian, it means "from". What now is THE meaning of "da"? Or do you
prefer to speak of 3 (and more) different "da" words? But what, then,
would be a word anyway? The same as it's meaning? In that case, you're
claims were clearly self-contradicting, for, if "currying" is the same
as "the meaning of 'currying'" then how can you claim that "currying"
does not convey it's meaning?
From: Markus E L
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <7nwsvoq5xy.fsf@hod.lan.m-e-leypold.de>
Ingo Menger wrote:

> So what? It suffices that people associated the concept or whatever
> with his name for whatever reason.

And the human brain is really good in that: I mean, if human brains
can do anything good, it's associating. E.g. if I'd coin the term
Xahism for a specific firgure of spech or Xahdom for a certain kind of
behaviour, I'm quite sure, a huge number of people would (almost)
_exactly_ know what I mean. Abso-f*cking-lutely am-azing. :-)

>> I would like to do some explanation
>
> We know already. Can't you ever imagine, that your lengthy paragraphs
> are nothing new to any decent reader of c.l.f.?

s/c.l.f/anything/ 

Regards -- Markus
From: David Formosa (aka ? the Platypus)
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <slrnfclien.26q.dformosa@localhost.localdomain>
On Mon, 20 Aug 2007 03:58:28 -0700, Xah Lee <···@xahlee.org> wrote:

[...]

> Now, one of the first response to this message, is a mockery, arguing
> that my opinion is unfounded. I quote below:
>
> ?David Formosa (aka ? the Platypus)? wrote:
> �
> Likewise I would like to complain about the use of the word "curry" in
> cooking.  Rather then a self explanatory name we use a corrupted loan
> word from one of the meany indian languages.  A word that in its
> orginal language doesn't mean what we use the english work to mean.  I
> propose we ban the use of the word "curry" and propose that we as an
> alternative use the phrase "spicy Indian style sauce".
>
> Also I think that the terminology around the naming of spades is over
> complex (meany people get spades and shovals confused for example).  I
> propose an OO naming soultion of tool.dig.manual.pointed
> �
>
> This person, judged on this response, i deem a moron. However, there
> are so many moronic newsgroup posts, that i could not possible reply
> to each.

Perhaps you should consider the possability that just because people
disagree with you they are not morons.

[...]

> If i write sloppily,
> in a blog, then it will have effect just like that. But if i take the
> time (tremendous time), to formulate it, use proper writing styles,
> edit it, give detailed explanations, examples, gather references,
> format the text properly, and so on, like a formal publication, then
> as such, it makes a much larger impact on the readers. In short, i
> could not assume a very learned audience that have special knowledge
> in the areas of my topic.

You have to understand your audience.  Just as someone posting to this
newsgroup can assume that thouse reading this newsgroups will have a
familuarity with the ideas of functional programing.

> Of course, those who do, will find my
> opinion considerable, and the informal and short presentation
> sufficient for presenting a opinion, but the vast majority of
> newsgroup readers (say, 95%), will respond by drivel.

I've been reading your posts for quite a while on this newsgroups and
others.  I beleave that people reply to your posts in this mannor not
because for the form of your post but because they view your
understanding of the core concepts that your discussing lacking.
Combined with your tendency to present your opinions on what the world
should be like as declaritive statments of of what the world is like.

[...]

> I will now take some reasonable assumptions about the mockery, since
> it is short, and one cannot accurately infer what's the author's real
> meanings.

Again this is a mattor of understanding your audience.  I expected
(quite reasonably it turns out) that thouse reading what I wrote would
get my points.

>  The basis of the mockery is that, there are many words used
> in natural languages that are fucked up in one way or another that has
> little connection to what the word means.

One of the things I was trying to express was that the naming of
concepts is to some degree arbitrary.  We name things so that the name
is smaller then the concept that it points at, this allows us to
compress language and communicate already established ideas.  Because
of this we can't embed the meaning of the word inside the word itself.

Anyone who is trying to express the currying idea is going to be
exposed to it via teaching.  They will get the concept and the name at
the same time.  I haven't seen anyone have difficulty with the concept
of currying due to its name, I've seen people have difficulty with the
concept of currying because of it requires a high order functional
form of thought that a imperative mindset gets in the way of.

[...]

> Alternatively, perhaps the mockery
> writer's intention was that, it is hopeless to change the established
> scientific jargons,

To communicate you need to use the same words as the person your
communicating with.  If you use diffrent words then you limit your
audience.  If you established an alternative term for currying then
thouse people who used your term would be at a loss to the majority
who stuck with the use of the word.  
From: Ingo Menger
Subject: Re: WHAT is Currying?!?
Date: 
Message-ID: <1187708119.409830.53500@22g2000hsm.googlegroups.com>
On 17 Aug., 19:53, Xah Lee <····@xahlee.org> wrote:

> Xah Lee wrote:

I might be a coincidence, but Xah Lee's article is clearly
confucianistic. One basic idea of confucianism is that social disorder
and confusion stems from the failure to call things by their proper
names.

Compare, for example:

http://en.wikipedia.org/wiki/Confucianism#Rectification_of_Names

"Xun Zi chapter (22) "On the Rectification of Names" claims the
ancient sage kings chose names (ming 名 "name; appellation; term") that
directly corresponded with actualities (shi 實 "fact; real; true;
actual"), but later generations confused terminology, coined new
nomenclature, and thus could no longer distinguish right from wrong."