So, tangentially, I wrote this: https://git.sr.ht/~bjoli/goof-loop/ it is a scheme looping facility combining the nice things of racket's loops with foof-loop.
It is mostly written in portable syntax-rules. The official documentation documents the last "stable version", whereas the readme documents a bit of the current state. I would love to add conditional branching, but it seems prohibitively hard to do using syntax-rules while also keeping the syntax moderate.
It is pretty portable. A 10 line syntax-case macro for the hairiest bits. The code it produces is easy for the optimizer to reason about, and the guile optimizer makes the code optimal (almost?) all of the time.
Iterate was one inspiration, and so was the holy grail of scheme looping facilities: the one described in the paper "the anatomy of a loop" by Olin Shivers'. If anyone has the code, for the love of god, write me a message!
Edit: and oh, if anyone has any questions about the kind of macrobatic masochism required to write good loop, I am happy to answer them!
It is mostly written in portable syntax-rules. The official documentation documents the last "stable version", whereas the readme documents a bit of the current state. I would love to add conditional branching, but it seems prohibitively hard to do using syntax-rules while also keeping the syntax moderate.
It is pretty portable. A 10 line syntax-case macro for the hairiest bits. The code it produces is easy for the optimizer to reason about, and the guile optimizer makes the code optimal (almost?) all of the time.
Iterate was one inspiration, and so was the holy grail of scheme looping facilities: the one described in the paper "the anatomy of a loop" by Olin Shivers'. If anyone has the code, for the love of god, write me a message!
Edit: and oh, if anyone has any questions about the kind of macrobatic masochism required to write good loop, I am happy to answer them!