[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Stream-filter and space leaks



>>>>> "Matze" == Matthias Neubauer <neubauer@xxxxxxxxxxxxxxxxxxxxxxxxxx> writes:

Matze> The real problem is see is the following: as soon as I apply some kind
Matze> of abstraction over STREAM-FILTER---which is something every Schemer
Matze> wants to do of course---, hell breaks loose again. E.g., if I type 

Matze>    (define (filter-zero stream)
Matze>      (stream-filter (lambda (x) (zero? x)) 
Matze>                     stream))
   
Matze>    (stream-car (filter-zero (stream-from 1)))

Matze> in scsh, I will again see a space leak.

Matze> Considering all the major Scheme implementations, how common is it to
Matze> use a flat closure representation for procedures?

This won't be solved by flat closures---the call to FILTER-ZERO is a
non-tail call, and it'd be necessary to mark dead variables in
continuation frames to make this not leak.  There's provision for
doing that in Scheme 48, but a compiler which exploits it is still in
the works.  (That specific part is functional, though.)

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla