Type Inference
With weak typing, type inference is needed.
The resulting type can be determined from the types of the arguments, and the nature of the operations.
Contagion provides one method for type inference:
With strong typing, means for determining type equivalence are needed.
Here x and y have structurally equivalent types.
C and C++ recognize structurally equivalent types as equivalent.
In Modula, most structurally equivalent types are not automatically considered equivalent, but they can be declared equivalent.