extern structure M : sig datatype t = A | B datatype u = C of t | D end val f = fn x => case x of M.A => M.B | M.B => M.A val t2s = fn x => case x of M.A => "A" | M.B => "B" val g = fn x => case x of M.C a => M.C (f a) | M.D => M.C M.A val u2s = fn x => case x of M.C a => t2s a | M.D => "D" val page = fn x => {cdata (t2s x)} val page2 = fn x => {cdata (u2s x)} val main : unit -> page = fn () =>
  • A
  • B
  • C A
  • C B
  • D