The State Monad by Example
This is a short tutorial on the state monad. Emphasis is placed on intuition. The types have been simplified to protect the innocent.
runState (return 'X') 1
initial state = 1 :: Int final value = 'X' :: Char final state = 1 :: Int result = ('X', 1) :: (Char, Int)