implementation module gameutils

map2 :: (.a *gs -> (.b, *gs)) ![.a] !*gs -> (![.b], !*gs)
map2 f [a:x] gs
     # (fa, gs) = f a gs
     # (rest, gs) = map2 f x gs
     = ([fa:rest], gs)
map2 f [] gs = ([], gs)
