Boost logo

Boost :

Subject: [boost] painless currying
From: Eric Niebler (eric_at_[hidden])
Date: 2011-08-23 15:38:19


After playing around with functional languages, I've come to envy how
easy they make it to curry functions. Call a 2-argument function with 1
argument and you get a function that takes 1 argument. Pass another
argument and it evaluates the function. Simple. In contrast, C++ users
have to use binders, which are not as nice.

On a lark, I implemented a wrapper that turns any TR1-style function
object into a "curryable" function object (attached). Successive
function call invocations bind arguments until enough arguments are
bound to invoke the wrapped function. With it you can do the following:

    curryable<std::plus<int> > p;
    auto curried = p(1);
    int i = curried(2);
    assert(i == 3);

Is there any interest in such a thing?

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com



Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk