$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] painless currying
From: John Bytheway (jbytheway+boost_at_[hidden])
Date: 2011-08-23 15:55:14
On 23/08/11 20:38, Eric Niebler wrote:
> 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?
Might be handy, but I'd think the following syntax would be more useful:
    std::plus<int> p;
    auto curried = curry(p)(1);
    int i = curried(2);
    assert(i == 3);
John Bytheway