2048 implemented in haskell