Currying
Currying is a functional programming language operation performed on functions of more than one argument, named after the logician Haskell Curry. Currying a function f of two arguments produces a function g of one argument that returns a function of one argument such that f(x, y) equals (g(x))(y), or in Lisp notation
To do currying in the Scheme programming language:
If g equals
These languages automatically fully curry functions called with too few arguments:
See also:
(f x y) equals ((g x) y). By extension, fully currying a function f of three arguments produces g such that f(x, y, z) equals ((g(x))(y))(z), or in Lisp notation (f x y z) equals (((g x) y) z).
(define curry2
(lambda (f)
(lambda (x) ; take the first argument
(lambda y ; and the rest of the args as a list
(f x . y)))))
(curry2 f), then (f x y) equals ((g x) y), and (f x y z) equals ((g x) y z).