Haskell-style monads