type none (X -> o) -> list X -> o.
main :- (X = none; X = some 2).
In the code above, the type checker complains that there are too many
types that could be assigned to X. However, the term
X = some 2 fixes the type of X, removing the
ambiguity.
Should the type checker be more clever?