
On Wednesday, August 24, 2011 02:15:03 PM Dave Abrahams wrote:
on Wed Aug 24 2011, "Peter Dimov" <pdimov-AT-pdimov.com> wrote:
Dave Abrahams wrote:
I suppose the symmetrical non-lazy version looks like: f(x) => doesn't call f f(x)(y) => doesn't call f f(x)(y)(z) => doesn't call f f(x)(y)(z)() => calls f
This allows you to express bind( f, x, y, z ), which was impossible before, but you've now lost the capability to express bind( f, x, y, _1 ), which was.
bind( f, _1, y, z ), which is often needed in practice, is possible under neither, which makes me view this whole exercise as somewhat academic.
Yes, it has always been my view that bind was unambiguously better for non-lazy languages, and at least more flexible even for lazy ones.
I start to think likewise. After all, most alternative solutions looked a lot like bind or at least would lead to something like bind.