<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
\ x -> average(4,x)
Currying is necessary if full laziness is to be applied to functional
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
Stefan Kahrs <email@example.com> 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.
CUPL « curly bracket « current « curried function
» currying » curseperl » curses