Currying is the technique of emulating multipleparametered functions with higherorder functions. The notion is that a function of arguments can be thought of as a function of 1 argument that maps to a function of arguments. A curried function is a function represented by currying, e.g.
For conciseness, the mapping operator
is usually considered rightassociative, so that
is equivalent.
In contrast, an uncurried function is usually specified as a mapping from a Cartesian product, such as
The term currying is derived from the name of Haskell Curry, a 20th century logician. However, Curry was not the first person to discover this notion, as it was first introduced by Gottlob Frege in 1893 and expanded by Moses Schönfinkel in the 1920s. Hence the notion is sometimes referred to as schönfinkeling.
