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@177: datatype u = C of t | D adamc@174: end adamc@174: adamc@177: val h = fn x : N.u => case x of N.C x => x | N.D => M.A adamc@174: adamc@177: datatype u = datatype N.u adamc@174: adamc@174: val i = fn x : u => case x of N.C x => x | D => M.A adamc@177: adamc@177: val toString = fn x => adamc@177: case x of adamc@177: C A => "C A" adamc@177: | C B => "C B" adamc@177: | D => "D" adamc@177: adamc@183: val rec page = fn x => adamc@183: {cdata (toString x)}
adamc@183:
adamc@183: adamc@183: Again! adamc@177: adamc@177: adamc@177: val main : unit -> page = fn () => adamc@177:
  • C A
  • adamc@177:
  • C B
  • adamc@177:
  • D
  • adamc@177: