Welcome to the esoteric church of functional programming!
Sure, you could use a Scratch for loop and be done with your cat piano program but have you considered constructing something that theoretically works like a for loop from obscure calculus?
We even have the occult symbol!
Joking aside, if base Scratch does lack a way to express trees as claimed Snap! may in fact be better from the perspective of teaching computer science concepts.
It did as of six months ago when I evaluated Scratch and chose Snap! instead for teaching the beginning-coding class I had signed up to teach. Scratch had lists, but they were only allowed to contain text or numbers, not other lists. To make a tree, you need to be able to nest lists inside other lists. Snap! allows lists to contain any kind of data, including other lists, or even blocks. And it allows blocks to take lists as input, which is another thing lacking from Scratch. Snap! also includes the standard basic list-manipulation functions like `filter` and `map`, which aren't in Scratch at all (naturally, since lists in Scratch can't be passed as input to blocks).