Alex Shinn <[email protected]> writes: > First, the srfi-41 vs. lazy-seq comparison in the > blog post was an apples to oranges comparison > of a clumsy letrec vs a compact named let. If we > rewrite the srfi-41 version in the same style as > the lazy-seq one, then we get: > > (define multiples-of-three > (let next ((n 3)) > (stream-cons n (next (+ n 3)))))
Ah, thanks for pointing this out -- I was really surprised that I couldn't find a simpler way to express this with SRFI 41. I'll update the blog article accordingly. > Now, if we have a whole program or library which > consistently uses lazy streams instead of lists, > we can import srfi-41 renaming all the stream-* > bindings by removing the stream- prefix (this is > where the drop-prefix you like comes in handy). > Then you have a normal Scheme library using > car/cdr/cons etc. which happens to be using > streams (and you could change the import if > needed to toggle between the two). Fair enough. I was actually considering to provide a module which exports the functions without the `lazy-' prefix, perhaps with a `*' suffix so that it can be conviently loaded alongside regular Scheme. The same could be done with SRFI 41, of course. What I don't quite understand is why SRFI 41 also defines stream-let, stream-lambda etc. Do you know of a good reason why one would want those? Moritz _______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
