Mercurial > urweb
annotate tests/datatypeP.ur @ 2203:39faa4a037f4
ML half of initial prototype. (Doesn't compile because there's no C yet.)
author | Ziv Scully <ziv@mit.edu> |
---|---|
date | Tue, 25 Mar 2014 02:04:06 -0400 |
parents | 71bafe66dbe1 |
children |
rev | line source |
---|---|
adamc@191 | 1 datatype option a = None | Some of a |
adamc@191 | 2 |
adamc@191 | 3 val none : option int = None |
adamc@191 | 4 val some_1 : option int = Some 1 |
adamc@191 | 5 |
adamc@191 | 6 val f = fn t ::: Type => fn x : option t => |
adamc@191 | 7 case x of None => None | Some x => Some (Some x) |
adamc@191 | 8 |
adamc@191 | 9 val none_again = f none |
adamc@191 | 10 val some_1_again = f some_1 |
adamc@193 | 11 |
adamc@193 | 12 val show = fn t ::: Type => fn x : option t => case x of None => "None" | Some _ => "Some" |
adamc@193 | 13 |
adamc@193 | 14 val page = fn x => <html><body> |
adamc@193 | 15 {cdata (show x)} |
adamc@193 | 16 </body></html> |
adamc@193 | 17 |
adamc@193 | 18 val main : unit -> page = fn () => <html><body> |
adamc@193 | 19 <li><a link={page none_again}>None</a></li> |
adamc@193 | 20 <li><a link={page some_1_again}>Some 1</a></li> |
adamc@193 | 21 </body></html> |