Agreed. Nevertheless, I was pleasantly surprised to see that ly:parser-include-string could accept an incomplete _expression_. (Previously, ly:parser-parse-string would have been much less flexible here.)

Let's rather do this in a sane manner:

Indeed, a named "let" loop is clearly the preferred way to go!

That being said, I still wonder if there’d be any way of making it work with either iota or make-list without having to go through string manipulations. (It would remove the need for a loop with an incremented counter.)

You can use something like (fold (if (negative? num) drop rise) music (make-list (abs num) 1))

but I don't like creating lists for the sake of controlling loop size.

By the way: `drop' is a function imported from (slri slri-1) and it'sprobably not a good idea to redefine it.