The revised implementation of SRFI-40 uses the delay and force of SRFI-45.<br><br>
<div><span class="gmail_quote">On 8/4/07, <b class="gmail_sendername">Will M Farr</b> &lt;<a href="mailto:farr@mit.edu">farr@mit.edu</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">On Aug 4, 2007, at 5:33 PM, David Einstein wrote:<br><br>&gt; I was the one who said that srfi-40 streams are tricky.&nbsp;&nbsp;The fact that
<br>&gt; they do not always delay when you expect them to coupled with the fact<br>&gt; that mzscheme 370 will occasionally crash on windows when you run out<br>&gt; of memory (even with memory limited) has caused me a certain amount of
<br>&gt; anguish.&nbsp;&nbsp;It took me a while to get an intuitive sense of what was<br>&gt; going on, but now it pretty much makes sense.&nbsp;&nbsp;I suspect that either<br>&gt; too many forces, or too few delays are the penalty one pays for lazy
<br>&gt; programming in an eager language (the Wadler paper is on my to read<br>&gt; list.)<br><br>As an aside, you might have a look at SRFI-45 (http://<br><a href="http://srfi.schemers.org/srfi-45/srfi-45.html">srfi.schemers.org/srfi-45/srfi-45.html
</a> ); it introduces a new<br>primitive, (lazy ...), which acts like an atomic (delay (force ...))<br>from SRFI-40, but does so &quot;tail-recursively&quot;.&nbsp;&nbsp;This means that many<br>lazy algorithms which should be iterative, but are not with the
<br>(delay (force ...)) of SRFI-40, truly become iterative.&nbsp;&nbsp;(See the<br>srfi document for an extensive discussion of the problems with (delay<br>(force ...)) and unbounded allocation with algorithms that should be<br>iterative.)&nbsp;&nbsp;Perhaps some of your problems running out of memory
<br>could be avoided this way?<br><br>Will<br>_________________________________________________<br>For list-related administrative tasks:<br><a href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme">http://list.cs.brown.edu/mailman/listinfo/plt-scheme
</a><br></blockquote></div><br>