
Giovanni Piero Deretta skrev:
On Wed, Feb 25, 2009 at 7:04 PM, Thorsten Ottosen <thorsten.ottosen@dezide.com> wrote:
What about something like
total = r | filter(f) | map(m) -> accumulate(zero, a);
how would you make this work (leaving the framework extensible to new algorithm)? Maybe you meant ->*.
or
total = r | filter(f) | map(m) >> accumulate(zero, a);
I sort of like the >> syntax (btw, I think that there are functional languages that use the same syntax for function chaining), but I do not see the necessity of distinguishing between '|' and '>>'. Just use one.
Well, since there is a semantical difference, and a large one, I'm leaning towards that we should use two operators. Especially is we will have both adaptor::transform and transform as an algorithm.
?
The is a problem when we just want to apply several algorithms:
boost::erase( cont, boost::unique( boost::sort(cont) ) );
I woudn't put many inplace algorithm in the same expression nor encourage users to do it. The unique->erase idiom is common, on the other hand sort has little reason being in that expression.
Unique won't work properly if you don'e have a sorted sequence, AFAIR -Thorsten