curried function

from The Free On-line Dictionary of Computing (8 July 2008)
curried function

   <mathematics, programming> A {function} of N {arguments} that
   is considered as a function of one argument which returns
   another function of N-1 arguments.  E.g. in {Haskell} we can
   define:

   	average :: Int -> (Int -> Int)

   (The parentheses are optional).  A {partial application} of
   average, to one Int, e.g. (average 4), returns a function of
   type (Int -> Int) which averages its argument with 4.  In
   uncurried languages a function must always be applied to all
   its arguments but a {partial application} can be represented
   using a {lambda abstraction}:

   	\ x -> average(4,x)

   Currying is necessary if {full laziness} is to be applied to
   functional sub-expressions.

   It was named after the logician {Haskell Curry} but the
   19th-century logician, {Gottlob Frege} was the first to
   propose it and it was first referred to in ["Uber die
   Bausteine der mathematischen Logik", M. Schoenfinkel,
   Mathematische Annalen. Vol 92 (1924)].

   {David Turner} said he got the term from {Christopher
   Strachey} who invented the term "currying" and used it in his
   lecture notes on programming languages written circa 1967.
   Strachey also remarked that it ought really to be called
   "Schoenfinkeling".

   Stefan Kahrs <[email protected]> reported hearing somebody in
   Germany trying to introduce "scho"nen" for currying and
   "finkeln" for "uncurrying".  The verb "scho"nen" means "to
   beautify"; "finkeln" isn't a German word, but it suggests "to
   fiddle".

   ["Some philosophical aspects of combinatory logic",
   H. B. Curry, The Kleene Symposium, Eds. J. Barwise,
   J. Keisler, K. Kunen, North Holland, 1980, pp. 85-101]

   (2002-07-24)
    

[email protected]