Practical uses of monads in Haskell