Mercurial > urweb
annotate tests/case.ur @ 596:d1ec54288b1a
Injected a polymorphic, recursive type
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Thu, 08 Jan 2009 10:15:45 -0500 |
parents | 71bafe66dbe1 |
children |
rev | line source |
---|---|
adamc@170 | 1 datatype t = A | B |
adamc@170 | 2 |
adamc@170 | 3 val swap = fn x : t => case x of A => B | B => A |
adamc@170 | 4 |
adamc@170 | 5 datatype u = C of t | D |
adamc@170 | 6 |
adamc@170 | 7 val out = fn x : u => case x of C y => y | D => A |
adamc@170 | 8 |
adamc@170 | 9 datatype nat = O | S of nat |
adamc@170 | 10 |
adamc@171 | 11 val is_two = fn x : nat => |
adamc@170 | 12 case x of S (S O) => A | _ => B |
adamc@171 | 13 |
adamc@171 | 14 val zero_is_two = is_two O |
adamc@171 | 15 val one_is_two = is_two (S O) |
adamc@171 | 16 val two_is_two = is_two (S (S O)) |