(* Type Inference *) val I : 'a->'a = fn x=>x fun I(x:'a):'a = x val I = fn x=>x fun I(x) = x val J = I I fun J x = I I x val l = nil @ nil