lazy thoughts
noobie
a at b.com
Tue Jan 13 00:01:58 PST 2009
Andrei Alexandrescu Wrote:
> noobie wrote:
> > Andrei Alexandrescu Wrote:
> >
> >> int[] arr = [ 1, 2, 3, 4 ];
> >> auto squares = map!("a * a")(arr);
> >> arr[] = [ 5, 6, 7, 8 ];
> >>
> >> Now iterating squares will see different numbers than the original ones.
> >
> >
> > Okay, what is the problem in maintaining a reference to the original array values?
>
> Efficiency. You'd have to copy the whole range, and in fact deep copy it.
>
> Andrei
Why can't it be done like copy-on-write? So all such functions would be lazy by default. Maybe on seeing code that modifies original values, a copy is created?
Also with the current proposal I think its still better to provide two version than simply give the lazy func and .eager . Using standard lib functions should involve very little typing and the names make the code more legible.
Thanks.
More information about the Digitalmars-d
mailing list