Reply to Andrei,
One nice thing about lazy is that lazy includes eager. If you actually want to "eagerize" map, you just call eager against the returned range:int[] arr = [ 1, 2, 3, 4 ]; auto squares = eager(map!("a * a")(arr)); assert(squares == [ 1, 4, 9, 16 ]);
Nice, that covers my major concern as long as it's not doing a lazy eval for each member even so.Based on that I'd think making it a property would be better.
For some cases, might the computational overhead be the high cost bit rather than the alloc? In that cases you might want to have a memoize option as well.
