The book is really great. It starts with a very interesting explanation of lambda calculus and how high-level functional programming language can be tied to it. Chapters 8 and 9 were written by Peter Hancock and cover step by step how to write a polymorphic type-checker (the examples are in Miranda but it's not far from Haskell).
For a 1987 book, it all aged very well.
Christoph Hegemann: type inference from scratch: https://www.youtube.com/watch?v=ytPAlhnAKro
<bool> ::= T | F | IsZero <num>
<num> ::= O
<arith> ::= Succ <num> | Pred <num>
That doesn't affect the actual implementation, since (as they say right after) "For simplicity, we merge all them together in a single Term."