> For example, the principal type of `head` is `[a]->a`; `[b]->a`, `a->a`, or even `a` are correct types, but too general, whereas something like `[Integer]->Integer` is too specific.
— It is not clear how `a → a` can be a correct type for `head`,
insofar as all occurrences of a type variable must be instantiated to
the same concrete type. If this sentence is actually correct, perhaps
it could be clarified to address the issue?