[Haskell] Genuine shift/reset in Haskell98