[Haskell] Any way to change state type in a monad?