# currying

Currying is the technique of emulating multiple-parametered functions with higher-order functions. The notion is that a function of $n$ arguments can be thought of as a function of 1 argument that maps to a function of $n-1$ arguments. A curried function is a function represented by currying, e.g.

 $f\colon A\to(B\to C)$

For conciseness, the mapping operator $\rightarrow$ is usually considered right-associative, so one could drop the parentheses in the expression above and write $f\colon A\to B\to C$ instead.

In contrast, an uncurried function is usually specified as a mapping from a Cartesian product, such as

 $f\colon(A\times B)\to C.$

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.

From the perspective of category theory, currying can be thought of as exploiting the fact that $-\times B$ and $\operatorname{Hom}(B,-)$ are adjoint functors on $\mathbf{Set}$. That is, for each set $B$, there is a natural equivalence

 $\nu\colon\operatorname{Hom}_{\mathbf{Set}}(-\times B,-)\overset{\cdot}{% \longrightarrow}\operatorname{Hom}_{\mathbf{Set}}(-,\operatorname{Hom}(B,-))$

defined by sending a map $f\colon(A\times B)\to C$ to the map $\nu_{f}\colon A\to\operatorname{Hom}(B,C)$. For each $a\in A$, $\nu_{f}(a)\colon B\to C$ is the map defined by $\nu_{f}(a)(b)=f(a,b)$.

Title currying Currying 2013-03-22 12:33:35 2013-03-22 12:33:35 mps (409) mps (409) 8 mps (409) Definition msc 68Q01 schönfinkeling schönfinkelization HigherOrderFunction curried function uncurried function