The first list of instructions is obeyed on the way up the spiral i.e. as the instances of the function are being built and the second list is obeyed on the way back down the spiral as the instances ...
The version that involves mutation is likely to be slower, since our compiler doesn’t optimize mutation (so that much effort can be spent elsewhere). The idiomatic way to write an imperative loop is ...