The Haskell school of expression : learning functional programming through multimedia - Hudak, Paul (Cambridge University Press, 2000)