Mercurial > urweb
comparison tests/stypes.ur @ 588:5803b4f041cb
Basic datatype reactives
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Thu, 01 Jan 2009 11:26:34 -0500 |
parents | 4c899701bd28 |
children | 102e81d975e3 |
comparison
equal
deleted
inserted
replaced
587:4c899701bd28 | 588:5803b4f041cb |
---|---|
1 datatype color = Red | White | Blue | |
2 | |
3 fun c2s c = | |
4 case c of | |
5 Red => "Red" | |
6 | White => "White" | |
7 | Blue => "Blue" | |
8 | |
9 val show_color = mkShow c2s | |
10 | |
11 datatype list a = Nil | Cons of a * list a | |
12 | |
13 fun isNil (t ::: Type) (ls : list t) = | |
14 case ls of | |
15 Nil => True | |
16 | _ => False | |
17 | |
18 fun delist (ls : list string) : xml body [] [] = | |
19 case ls of | |
20 Nil => <xml>Nil</xml> | |
21 | Cons (h, t) => <xml>{[h]} :: {delist t}</xml> | |
22 | |
1 fun main () : transaction page = | 23 fun main () : transaction page = |
2 sInt <- source 0; | 24 sInt <- source 0; |
3 sFloat <- source 1.23; | 25 sFloat <- source 1.23; |
4 sBoth <- source (7, 42.1); | 26 sBoth <- source (7, 42.1); |
5 | 27 |
6 sOpt <- source None; | 28 sOpt <- source None; |
7 sBool <- source True; | 29 sBool <- source True; |
30 | |
31 sColor <- source White; | |
32 sList <- source Nil; | |
8 | 33 |
9 return <xml><body> | 34 return <xml><body> |
10 <dyn signal={n <- signal sInt; return <xml>{[n + 3]}</xml>}/> <a onclick={set sInt 1}>Change</a><br/> | 35 <dyn signal={n <- signal sInt; return <xml>{[n + 3]}</xml>}/> <a onclick={set sInt 1}>Change</a><br/> |
11 | 36 |
12 <dyn signal={n <- signal sFloat; return <xml>{[n + 1.0]}</xml>}/> <a onclick={set sFloat 4.56}>Change</a><br/> | 37 <dyn signal={n <- signal sFloat; return <xml>{[n + 1.0]}</xml>}/> <a onclick={set sFloat 4.56}>Change</a><br/> |
23 <a onclick={set sOpt (Some 7)}>Change</a><br/> | 48 <a onclick={set sOpt (Some 7)}>Change</a><br/> |
24 | 49 |
25 <dyn signal={b <- signal sBool; return <xml>{[b]}</xml>}/> | 50 <dyn signal={b <- signal sBool; return <xml>{[b]}</xml>}/> |
26 <dyn signal={b <- signal sBool; if b then return <xml>Yes</xml> else return <xml>No</xml>}/> | 51 <dyn signal={b <- signal sBool; if b then return <xml>Yes</xml> else return <xml>No</xml>}/> |
27 <a onclick={set sBool False}>Change</a><br/> | 52 <a onclick={set sBool False}>Change</a><br/> |
53 | |
54 <dyn signal={c <- signal sColor; return <xml>{[c]}</xml>}/> | |
55 <a onclick={set sColor Red}>Red</a> | |
56 <a onclick={set sColor White}>White</a> | |
57 <a onclick={set sColor Blue}>Blue</a><br/> | |
58 | |
59 <dyn signal={ls <- signal sList; return <xml>{[isNil ls]}</xml>}/> | |
60 <a onclick={set sList (Cons ("A", Cons ("B", Nil)))}>Change</a><br/> | |
28 </body></xml> | 61 </body></xml> |