Alternative Implementation of Haskell-style Monads
