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.