adamc@218: signature S = sig adamc@218: class c adamc@218: val default : t :: Type -> c t -> t adamc@218: adamc@218: val string_c : c string adamc@218: val int_c : c int adamc@218: end adamc@218: adamc@218: structure M : S = struct adamc@218: class c t = t adamc@218: val default = fn t :: Type => fn v : c t => v adamc@218: adamc@218: val int_c : c int = 0 adamc@218: val string_c : c string = "Hi" adamc@218: end adamc@218: adamc@218: val hi = M.default [string] _ adamc@218: val zero = M.default [int] _