Is a a way to do a “Bare” state monad in modern Haskell?