I wrote this code for project euler problem 7:<br><br>(require r5rs)<br>(require srfi/41)<br><br>(define stream-primes<br>&nbsp; (let ((numbers (stream-cons 2 (stream-from 3 2)))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (filter-stream<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; (stream-lambda<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (divisor strm)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (let ((not-div<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (lambda (dividend)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; (not (zero? (modulo dividend divisor))))))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; (stream-filter not-div strm)))))<br>&nbsp;&nbsp;&nbsp; (stream-let <br>
&nbsp;&nbsp;&nbsp; &nbsp; loop<br>&nbsp;&nbsp;&nbsp; &nbsp; ((strm numbers)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; (primes stream-null))<br>&nbsp;&nbsp;&nbsp; &nbsp; (define prime (stream-car strm))<br>&nbsp;&nbsp;&nbsp; &nbsp; (stream-append<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (stream prime)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (loop (filter-stream prime (stream-cdr strm))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; (stream-append primes (stream prime)))))))<br>
<br>and I ran (stream-ref stream-primes 10000)<br><br>It took unreasonably long to run.&nbsp; Much longer than it took my python code (which uses python&#39;s generators, to which srfi/41&#39;s lazy comprehensions are as close as I can find in scheme).&nbsp; I&#39;m curious as to whether this is an artifact of lazy comprehensions in scheme being slow or just my code being wrong.<br>
<br>Thank you to anyone who takes the time to read this.<br clear="all"><br>-- <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Alex R<br>