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