[RWHaskell p197]
[RWHaskell p203]
[RWHaskell p211]