33 lines · 506 B · Standard ML
RawDownload
fun even 0 = true  | even x = odd(x-1)and odd  0 = false  | odd  x = even(x-1); even 10; even 11; datatype 'a X = X of string; val stripX = fn X u => u;fn _ => stripX (X "OK");it () : string; val stripX666 = fn X "666" => X "000" | x => x; fn _ => stripX666 (X "666");it () : int X; fn _ => stripX666 (X "OK");it () : int X; datatype XXX =    A of int * int  | B of int * int; val a12 = A(1,2)and b12 = B(1,2); fun strip (A x) = x  | strip (B x) = x; a12 = b12;strip a12 = strip b12;