Thinking Functionally with Haskell - Bird, Richard (Cambridge University Press, 2015)