CSC448: Type Checking Revisited: Generic Polymorphism II [112/133] |
This feature of a language is known as generic or parametric polymorphism, but it should be distinguished from the subtype polymorphism found in almost all object-oriented languages.
How does this fragment of Java code:
List reverse1 (List l) { List result = new ArrayList (); Iterator iter = l.iterator (); while (iter.hasNext ()) { Object o = iter.next (); result.add (o); } return result; }
differ from this ML code?
> val 'a reverse = fn : 'a list -> 'a list fun reverse [] = [] | reverse (x::xs) = (reverse xs) @ [x];