The most general type of an expression. For example, the following are all valid types for the lambda abstraction (\ x . x):
Int -> Int Bool -> Bool (a->b) -> (a->b)
but any valid type will be an instance of the principal type: a -> a. An instance is derived by substituting the same type expression for all occurences of some type variable . The principal type of an expression can be computed from those of its subexpressions by Robinson's unification algorithm .
(1994-12-16)