adamc@170: datatype t = A | B adamc@170: adamc@170: val swap = fn x : t => case x of A => B | B => A adamc@170: adamc@170: datatype u = C of t | D adamc@170: adamc@170: val out = fn x : u => case x of C y => y | D => A adamc@170: adamc@170: datatype nat = O | S of nat adamc@170: adamc@170: val is_two = fn x : int_list => adamc@170: case x of S (S O) => A | _ => B