puyopuyo impl by haskell