On Mon, Feb 23, 2015 at 9:57 PM, Kooda <ko...@upyum.com> wrote: > Hi! > > I’ve been playing with lazy-seq for the past few days and found a very > strange behaviour: > > The heap of the following program keeps growing rapidly in csi, running > the same program after compilation seems to slow down the growth quite a > lot but the heap isn’t constant as I was expecting it to be. > > Here is a test case of the problem: > > > ; Start this script with `csi -:D -:hi100k -:hg101` to observe heap > resizing > > (use lazy-seq) > > (define (complex-stream seq) > (lazy-map identity seq)) > > ; This seems to leak: > (lazy-each void (complex-stream (lazy-numbers))) > > > ; This doesn't: > #;(lazy-each void (lazy-map identity > (lazy-numbers))) >
You may be falling short of the issue described by SRFI 45, which is that in all known Scheme implementations: (define (loop) (delay (force (loop)))) (force (loop)) leaks memory. In R7RS this becomes (define (loop) (delay-force (loop))) which is required by the standard not to leak. I'm not sure why you don't observe a leak in the second example. -- Alex
_______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users