Monday, February 16, 2015

haskell Writer IO monad transformer sample

module Main where

import Control.Monad.Writer (WriterT, tell, runWriterT)

main :: IO ()
main = do
  result <- runWriterT main'
  print result
  return ()

main' :: WriterT [String] IO ()
main' = do
  x <- foo
  y <- bar
  tell [show x ++ show y]
  return ()

foo :: WriterT [String] IO Int
foo = do
  tell ["foo"]
  return 42

bar :: WriterT [String] IO Int
bar = do
  tell ["bar"]
  return 43

No comments: