Search in: Word
Vietnamese keyboard: Off
Virtual keyboard: Show
Computing (FOLDOC) dictionary
curried function
Jump to user comments
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
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 ChristopherStrachey 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 smk@dcs.ed.ac.uk 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".