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

Re: Stream-filter and space leaks

This page is part of the web mail archives of SRFI 40 from before July 7th, 2015. The new archives for SRFI 40 contain all messages, not just those from before July 7th, 2015.

   From: Matthias Neubauer <neubauer@xxxxxxxxxxxxxxxxxxxxxxxxxx>
   Date: 25 Feb 2003 17:01:34 +0100

   I, for my part, downloaded the current reference implementation as
   found on http://srfi.schemers.org/srfi-40/srfi-40.txt. The only thing
   that I then changed was that I replaced the former version of
   STREAM-FILTER by the one Phil posted last Thursday. When I load this
   into my scsh (0.6.3) and evaluate

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

   the whole thing dies pretty soon ejecting a post-gc interrupt---i.e,
   scsh seems to run out of memory.

For me, using Scheme 48 version 0.57, the current reference implemenation
leaks for

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

Using either or both the new stream-filter or the non-reentrant promises
fixes the problem.

Our different experiences may be based on differences between the 0.57 and
the Scheme 48 version underlying Scsh 0.6.3.  I don't know which version
that is.

   The only thing I am not sure about is, if STREAM-UNFOLDN is the right
   abstraction to transform streams (it looks a little bit too "heavy
   weight" to me ...).

It certainly isn't a polished result.  Most of the goofiness comes from
wanting to be able to convert N input streams into M output streams.
It might be simpler to have three functions that handle N->1, 1->1, and
1->N conversions.  Perhaps having all four would be the most useful thing
to do.

It's a bit hard to tell what your stream-transform is doing.  Can you 
explain it?  Or give a type?
                                             -Richard Kelsey