On Thursday, 27 March 2014 at 19:03:26 UTC, Andrei Alexandrescu wrote:
On 3/27/14, 9:12 AM, monarch_dodra wrote:
filter comes to mind. -- Andrei

You *just* turned down a pull that did exactly that, for exactly the
same reasons.

I was on the verge, and we need to discuss this more. A constructor that does arbitrary work for a lazy range doesn't sit well. -- Andrei

I still think there's ambiguity in the word "lazy". I think this is the distinction most make:

Not lazy:
//----
auto r = getSomeRange();
auto arr = someRange.array();
foreach( ref e ; arr)
    doSomething;
remove!fun(arr);
return arr;
//----

Lazy:
//----
return getSomeRange()
    .map!doSomething()
    .filter!fun()
    .array();
//----

What you are talking about (IMO) is better described as "eager" vs "not eager".

"A constructor does some work for a lazy range that does eager processing of its elements": I think this is a better description, and I think is acceptable.

Reply via email to