[Home]Currying

HomePage | Recent Changes | Preferences

Currying is a functional programming language operation performed on functions of more than one argument. 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 (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).

To do currying in the Scheme programming language:

 (define curry2
   (lambda (f)
     (lambda (x)    ; take the first argument
       (lambda y    ; and the rest of the args as a list
         (f x . y)))))

If g equals (curry2 f), then (f x y) equals ((g x) y), and (f x y z) equals ((g x) y z). (To do: Add Scheme language definition for currying to any given depth.)

The ML language automatically fully curries functions called with too few arguments.

Currying is named after the logician [Haskell Curry]?.

See also Haskell programming language.


HomePage | Recent Changes | Preferences
This page is read-only | View other revisions
Last edited September 29, 2001 9:26 am by Damian Yerrick (diff)
Search: