On Sunday 30 Jan 2005 7:40 pm, Adrian Hey wrote:
> On Sunday 30 Jan 2005 4:00 pm, Axel Jantsch wrote:
> > Hi,
> >
> > How can I get constant space behaviour for lazy, recursive streams?
> >
> > Consider:
> > > gibs = 1 : 1 : (zipWith f gibs (tail gibs))
> > >        where f x y = min (x + y) 10
> >
> > This is derived from the fibs text book example, modified to bound the
> > memory requirement for each list element.
> >
> > Evaluating gibs should require constant amount of memory, since the
> > computed parts of the list are not needed any more and can be reclaimed.
> >
> > However, hugs says:
> >
> > Main> nth 100 fibs
> >   10
> >   (2818 reductions, 3730 cells, 1 garbage collection)
>
> I think maybe you need a strict version of zipWith, otherwise
> even if gibs itself is garbage collected as expected you will
> still get 98 lazy applications of f (thunks) before the actual
> value of f is demanded.
-----------^

Erm, that should be the value of the nth element of course.

Regards
--
Adrian Hey
 
_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to