Polymorphic functions
ML allows functions to be
- Completely polymorphic
- Polymorphic over types that admit =
- eq_pair: (``a*``b)*(``a*``b)->bool
- Monomorphic
- fun square n = n * n
- int or real, but not both
With the singular exception of equality types, ML supports universal or unbounded parametric polymorphism