adamc@174: structure M = struct adamc@174: datatype t = A | B adamc@174: end adamc@174: adamc@174: val f = fn x : M.t => case x of M.A => M.B | M.B => M.A adamc@174: adamc@174: datatype t = datatype M.t adamc@174: adamc@174: val g = fn x : t => case x of M.A => B | B => M.A adamc@174: adamc@174: structure N = struct adamc@174: datatype t = C of t | D adamc@174: end adamc@174: adamc@174: val h = fn x : N.t => case x of N.C x => x | N.D => M.A adamc@174: adamc@174: datatype u = datatype N.t adamc@174: adamc@174: val i = fn x : u => case x of N.C x => x | D => M.A