Boost logo

Boost :

Subject: [boost] [Boost.Lambda] Some new features are suggested: return, iterating yield, & local var
From: Huang Huan (mr.huanghuan_at_[hidden])
Date: 2012-01-03 07:05:50

Hi boosters,
   I'm intrested in Lambda, so I have worked out some new features, and
suggest boost lib add them. What can I do next?

NEW features:
1. return. why lambda lib do not include this?
 2. generate iterator/iteration by lambda using yield return/yield break.
3. local/global var declare and using.

1. return
    boost::function<char(int)> f =
            if_ ( _1 >= 0 )
p.s. return should be supported.

2. iterator/iteration generation by lambda using yield return/yield break
    const char* p; // we shuld use the local var inside lambda instead of
this var p. refer to section 3
    iteration<char> it =
            for_(var(p) = _1, *var(p), var(p)++) [
                if_(*var(p) != ' ') [ yield_return(*var(p)) ]
                if_(*var(p) == ';') [ yield_break() ]
        ) ("I love this game; no use");
The packing iteration interface is very like the yield keyword in C#

3.local/global var declare and using
    char a;
    var_name x, y, z;
    global_var<int>(y); // put this line inside lambda is ok, just before
use it
            local_var<int>(x), // local var declare
            // global_var<int>(y),
            var(a) = 'a',
            var<int>(x) = _2, // using local var x
            var<int>(x) = _1, // error! x is not local var here.
            var<int>(y), // ok for global even if another lambda
            var<char>(z) = 'b',
Now, in my work. It's hard to simplify var<T>(x) to var(x). It's a hard
template working.

Boost list run by bdawes at, gregod at, cpdaniel at, john at