Fonte: Capítulo 3: Types and classes, do livro Programming in Haskell (Graham Hutton)