Samples and exercises from Richard Bird's Introduction to Functional Programming using Haskell