The Hindley-Milner type system is a foundation for most statically typed
functional programming languages, such as ML, OCaml and Haskell. This type
system has many advantageous, but it does make type debugging hard: If a
program is not well-typed, it can be difficult for the programmer to locate the
cause of the type error, that is, to determine where to change the program how.
Many solutions to the problem have been proposed. Here we propose a new
solution with two distinctive advantages: It is easy to use for the functional
programmer, because it appears to be only a minor extension of the type error
messages they are already familiar with. It is easy to implement, because it does
not require the implementation of a new type checker, but instead reuses any
existing one as a subroutine (like [2])