Lazy lists - an implementation.

Robert Virding rv@REDACTED
Wed Oct 18 13:25:50 CEST 2000


Richard Carlsson <richardc@REDACTED> writes:
>
>On Tue, 17 Oct 2000, Sean Hinde wrote:
>
>> If we already have a large list and want to generate another I guess
>> there would there be no benefit of converting this into a lazy_list
>> first? (would this make a Huge fun?)
>
>Not "Huge" - the function "lazy(L)" takes your normal list and embeds it
>in a small fun (no copying done) which will on demand return the next
>element. The space usage is comparable to a tuple with a small number of
>elements.

Yes, but you would still already have created the original huge list.
Converting it to a lazy list AFTERWARDS will not gain you anything in
space, actually it will cost you as you replace a cons cell with a 
tuple of a few extra elements.  That added to the extra execution cost 
of first making it lazy and then extracting each cons cell makes it all 
seem like a big lose.

This means that using lazy lists is really only practical if you use it 
consistently from start to finnish with an object.  That is why I 
suggested not calling them lazy lists but lazy <something else> as they 
aren't interchangeable.

	Robert

-- 
Robert Virding                          Tel: +46 (0)8 545 55 017
Alteon Web Systems                      Email: rv@REDACTED
S:t Eriksgatan 44                       WWW: http://www.bluetail.com/~rv
SE-112 34 Stockholm, SWEDEN
"Folk säger att jag inte bryr mig om någonting, men det skiter jag i".





More information about the erlang-questions mailing list