| 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];