A learning exercise to implement the Hindley-Milner type inference algorithm, in Haskell