Implementing type inference from scratch

A step-by-step guide to implementing type inference from scratch in a functional programming language.

Introduction