Mercurial > urweb
annotate tests/case.lac @ 218:a3413288cce1
Signature ascription for type classes
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Sat, 16 Aug 2008 16:57:21 -0400 |
parents | c7a6e6dbc318 |
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)) |