adamc@88: signature S = sig adamc@88: con nm :: Name adamc@88: con r :: {Type} adamc@88: adamc@88: constraint [nm] ~ r adamc@88: end adamc@88: adamc@88: structure M : S = struct adamc@88: con nm = #A adamc@88: con r = [B = float, C = string] adamc@88: adamc@88: constraint [A] ~ [B] adamc@88: constraint [nm] ~ r adamc@88: constraint [C] ~ [D] adamc@88: end adamc@88: adamc@88: structure M' = struct adamc@88: open M adamc@88: adamc@88: con combo = [nm = int] ++ r adamc@88: end adamc@88: adamc@88: structure M' = struct adamc@88: open constraints M adamc@88: adamc@88: con nm' = M.nm adamc@88: con r' = M.r adamc@88: con combo = [nm' = int] ++ r' adamc@88: end