fun map F = let fun M nil = nil | M(x::xs) = F x :: M xs in M end;