I would say it is mostly an extension of foof-loop with the addition of subloops. It is also written mostly in syntax-rules, which makes is portable.
I am not happy with the extensibility outside the possibility to add :for and :acc clauses, since it is pretty darn awful do do any changes to the internals. I have a couple of things I want to sort out, but the source code has started to scare me. -- Linus Björnstam On Mon, 12 Sep 2022, at 22:57, Maxime Devos wrote: > On 12-09-2022 21:19, Linus Björnstam wrote: >> If you want a bit more advanced looping you could have a look at my >> goof-loop: https://git.sr.ht/~bjoli/goof-loop >> >> It currently does not support a break or continue clause, but adding one >> should not really be a problem. >> >> A good thing is that it does not rely on mutation for anything except higher >> order sequences, meaning it does not lead to the implicit boxing overhead of >> set!, which is a good idea in loops since that quickly adds up. >> >> Best regards >> Linus Björnstam > > I also have a mutation-free loop macro, named 'hat-let' or 'let^': > > https://git.gnunet.org/gnunet-scheme.git/tree/gnu/gnunet/utils/hat-let.scm > > Its origin is rather different though, goof-loop appears to be the > result of combining various loop-related constructs, plus some extras, > whereas let^ is the result of combining various binding constructs > (including the 'let loop'), plus some extras. > > It combines the following: let*, lambda / define, receive, 'let loop', > 'if', 'begin'. > > Doesn't do any accumulation though. > > Greetings, > Maxime. > > Attachments: > * OpenPGP_0x49E3EE22191725EE.asc > * OpenPGP_signature