[Python-Dev] PEP 309 misuses the term "currying"
David Abrahams
dave at boost-consulting.com
Thu Feb 19 08:47:24 EST 2004
The operation performed by the operator described here is actually
called "Partial Application". A good definition of currying can be
found in http://tinyurl.com/3d6w6 and http://tinyurl.com/ly29.
Several languages have misused the term "curry" this way
http://tinyurl.com/2p6gb, http://tinyurl.com/2onya (Python)
http://tinyurl.com/36pus (JavaScript)
http://tinyurl.com/3dj6j (Dylan)
Currying transforms a function taking a single tuple argument into a
function taking multiple arguments, and uncurrying reverses the
process.
>>> def curry(f):
... return lambda *args: f(args)
...
>>> def add2(args): # add the first 2 elements of an argument tuple
... return args[0] + args[1]
...
>>> curry(add2)(1,2) # make add2 accept multiple args
3
>>> def uncurry(f):
... return lambda x: f(*x)
...
>>> uncurry(curry(add2))((1,2)) # reverse currying; pass a tuple
3
--
Dave Abrahams
Boost Consulting
www.boost-consulting.com
More information about the Python-Dev
mailing list