List Sort
¥class Cons extends List {
¥  Object first;
¥  List rest;
¥  Cons(Object f, List r) {
¥    first = f;
¥    rest = r;
¥  }
¥  Object getFirst() { return first; }
¥  List getRest() { return rest;  }
¥  List insert(Object e) {
¥    Comparable ce = (Comparable) e;
¥    Comparable cf = (Comparable) first;
¥    if (ce.compareTo(cf) < 0) return new Cons(e,this);
¥    else return new Cons(first, rest.insert(e));
¥  }
¥
¥  List sort() { return rest.sort().insert(first); }
¥
¥  public String toString() {
¥    // no leading space before first
¥    return "(" + first + rest.toStringHelp() + ")";
¥  }
¥  String toStringHelp() {
¥    // leading space before each elt
¥    return " " + first + rest.toStringHelp(); 
¥  }
¥}
¥