Haskell 98 free monads