I'm the original author. It doesn't seem like fifteen years ago.
Thanks for replying!
The Scheme world has moved on, various other concepts of laziness have been implemented, and I have no interest in revising SRFI-41. It was only ever intended as an academic exercise (all the structure required to support laziness makes it too slow for any real purpose) to introduce the concept of stream-lambda (inspired, of course, by all of Guy Steele's lambda papers).
That's fair.
I don't think a new SRFI is needed to fix a bug in the reference implementation (Arthur, please comment if that is incorrect), since there is no change in the concept of laziness that the SRFI describes; there has already been one bug fix. You might look at the Chicken version of SRFI-41, which fixes some of the problems (I don't know if it fixes all of them). If you want to fix the reference implementation, be warned: laziness is hard!
You're right that a new SRFI is not needed to fix a sample implementation. Sorry, Sorawee. Have I misinterpreted your feedback on SRFI 41? Are you just suggesting fixing the sample implementation, but not changing the document? Re-reading your message, I realize that that's probably what you meant.
I would welcome a pull request with a revised sample implementation. I would also welcome feedback from Phil or others on such a pull request. Phil says that getting it right is hard, and he has the voice of experience.
If your purpose is to write a real program that uses laziness, rather than to provide a generalized library, either use the laziness facilities provided by your Scheme implementation or write the minimal laziness support that you need for your program.
Phil, are you suggesting using the lower-level delay
and force
operations directly rather than using streams?