Louis Dionne
Dear Boost,
Here is a non-exhaustive list of some issues that were raised during the informal review of Hana last week, along with an explanation of what I did or am doing to resolve them.
[...]
4. It was suggested that `foldl` and `foldr` be renamed to something else. [...]
fold/reverse_fold aliases are now provided (see [1] for commit). Those aliases follow the behavior of Fusion/MPL closely, with the extension that it's possible to provide no initial state. Specifically, fold(sequence, state, f) == foldl(sequence, state, f) fold(sequence, f) == foldl1(sequence, f) reverse_fold(sequence, state, f) == foldr(sequence, state, flip(f)) reverse_fold(sequence, f) == foldr1(sequence, flip(f))
7. In a different thread [6], it was suggested that the Logical concept should interact well with Lazy computations. [...]
Arbitrary Lazy values and computations can now be used as branches to `eval_if` (see [2] for commit). More generally, anything that can be `eval`uated can be used as branches to `eval_if`, which means nullary lambdas: eval_if(condition, []{ return something; }, other_branch ) unary lambdas (useful for delaying instantiations, explained in the docs): eval_if(condition, [](auto delay) { return delay(f)(something); }, other_branch ) Lazy computations/values: eval_if(condition, lazy(f)(x, y, z), other_branch ) More syntactic sugar will probably be added so that `eval_if` looks prettier. Something along the lines of eval_if(condition)([]{ branch1 }).else_([]{ branch2 }) would be nice. I got this functionality (and more) locally, but I want to study all the possibilities before I check something in. Regards, Louis Dionne [1]: http://goo.gl/6hIWrA [2]: http://goo.gl/6yEhAz