Implementing RefMonads in Haskell without ST,IO