programdemos/rotate.xtl
Rotate along both axes: every frame moves the arrow one row down and one column right, wrapping around the edges of the board.
Run it with ./demos/rotate.xtl or "xetal run demos/rotate.xtl". It
prints eight frames separated by a blank line ("just animate" plays
them). Read -1 o̲-₁₂ b: one rotation along axes 1 and 2 together.
ᵘf̲rames : Num a => a -> b -> a
n u:f_rames b: prints board b and a blank line, then the next n - 1 frames, each b rotated one row down and one column right; gives 0.
ᵘf̲rames ← { n b → n = 0 ? n s ← p̲rint! b gap ← p̲rint! "" (n − 1) ᵘf̲rames -1 o̲-₁₂ b }