cat("", x) => x.
cat([x:y], z) => [x : cat(y,z)].

back("") => "".
back([h:t]) => cat(back(t), [h:""]).
