adamc@90: con id = fold (fn nm => fn t :: Type => fn acc => [nm] ~ acc => [nm = t] ++ acc) []
adamc@90: 
adamc@90: con idT = id [D = int, E = float]
adamc@90: 
adamc@90: val idV = fn x : $idT => x.E