Introduction To Functional Programming Systems Using Haskell by Antony J.T. Davie