adamc@590
|
1 fun getOpt (t ::: Type) (o : option t) (v : t) : t =
|
adamc@590
|
2 case o of
|
adamc@590
|
3 None => v
|
adamc@590
|
4 | Some x => x
|
adamc@590
|
5
|
adamc@591
|
6 cookie int : int
|
adamc@591
|
7 cookie float : float
|
adamc@592
|
8 cookie string : string
|
adamc@592
|
9 cookie bool : bool
|
adamc@593
|
10 cookie pair : int * float
|
adamc@594
|
11 cookie option : option int
|
adamc@591
|
12
|
adamc@590
|
13 fun main () : transaction page =
|
adamc@590
|
14 n <- getCookie int;
|
adamc@591
|
15 n <- return (getOpt n 7);
|
adamc@591
|
16 sn <- source 6;
|
adamc@591
|
17
|
adamc@591
|
18 f <- getCookie float;
|
adamc@591
|
19 f <- return (getOpt f 1.23);
|
adamc@591
|
20 sf <- source 4.56;
|
adamc@591
|
21
|
adamc@592
|
22 s <- getCookie string;
|
adamc@592
|
23 s <- return (getOpt s "Hi");
|
adamc@592
|
24 ss <- source "Bye";
|
adamc@592
|
25
|
adamc@592
|
26 b <- getCookie bool;
|
adamc@592
|
27 b <- return (getOpt b True);
|
adamc@592
|
28 sb <- source False;
|
adamc@592
|
29
|
adamc@593
|
30 p <- getCookie pair;
|
adamc@593
|
31 p <- return (getOpt p (1, 2.3));
|
adamc@593
|
32 sp <- source (4, 5.6);
|
adamc@593
|
33
|
adamc@594
|
34 o <- getCookie option;
|
adamc@594
|
35 o <- return (getOpt o (Some 1));
|
adamc@594
|
36 op <- source None;
|
adamc@594
|
37
|
adamc@590
|
38 return <xml><body>
|
adamc@590
|
39 <dyn signal={n <- signal sn; return <xml>{[n]}</xml>}/>
|
adamc@591
|
40 <a onclick={set sn n}>CHANGE</a><br/>
|
adamc@591
|
41
|
adamc@591
|
42 <dyn signal={f <- signal sf; return <xml>{[f]}</xml>}/>
|
adamc@591
|
43 <a onclick={set sf f}>CHANGE</a><br/>
|
adamc@592
|
44
|
adamc@592
|
45 <dyn signal={s <- signal ss; return <xml>{[s]}</xml>}/>
|
adamc@592
|
46 <a onclick={set ss s}>CHANGE</a><br/>
|
adamc@592
|
47
|
adamc@592
|
48 <dyn signal={b <- signal sb; return <xml>{[b]}</xml>}/>
|
adamc@592
|
49 <a onclick={set sb b}>CHANGE</a><br/>
|
adamc@593
|
50
|
adamc@593
|
51 <dyn signal={p <- signal sp; return <xml>{[p.1]}, {[p.2]}</xml>}/>
|
adamc@593
|
52 <a onclick={set sp p}>CHANGE</a><br/>
|
adamc@594
|
53
|
adamc@594
|
54 <dyn signal={o <- signal op; case o of
|
adamc@594
|
55 None => return <xml>None</xml>
|
adamc@594
|
56 | Some x => return <xml>{[x]}</xml>}/>
|
adamc@594
|
57 <a onclick={set op o}>CHANGE</a><br/>
|
adamc@590
|
58 </body></xml>
|