blob: e2cf4f944af615b9d9236c724692f109213b3981 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
fun fst [a] [b] (x : a) (y : b) = x
fun snd [a] [b] (x : a) (y : b) = y
fun fact n =
case n of
0 => 1
| _ => n * fact (n - 1)
datatype t =
A
| B of {C : int, D : float}
| E of t * t
fun render x =
case x of
A => "A"
| B {C = n1, D = n2} => "B(" ^ show n1 ^ "," ^ show n2 ^ ")"
| E (x, y) => "C(" ^ render x ^ "," ^ render y ^ ")"
fun main () =
s <- source "";
s' <- source "";
f <- source (plus 1);
f2 <- source fst;
r <- source {A = "x", B = "y"};
t <- source (E (A, B {C = 10, D = 1.23}));
ht <- source <xml>Nothing here yet.</xml>;
return <xml><body>
<ctextbox source={s}/> <ctextbox source={s'}/><br/><br/>
Function: <button value="+1" onclick={set f (plus 1)}/>
<button value="*3" onclick={set f (times 3)}/><br/><br/>
Function2: <button value="Fst" onclick={set f2 fst}/>
<button value="Snd" onclick={set f2 snd}/><br/><br/>
Both: <button value="*3,Snd" onclick={set f (times 3); set f2 snd}/><br/><br/>
<button value="Echo" onclick={s <- get s; alert s}/>
<button value="Echo2" onclick={s <- get s; alert s; alert s}/>
<button value="-" onclick={s <- get s; alert (show (-(readError s : int)))}/>
<button value="+1" onclick={s <- get s; alert (show (readError s + 1))}/>
<button value="*3" onclick={s <- get s; alert (show ((readError s) * 3))}/>
<button value="!" onclick={s <- get s; alert (show (fact (readError s)))}/>
<button value="f" onclick={s <- get s; f <- get f; alert (show (f (readError s)))}/>
<button value="+1P" onclick={s <- get s; case read s of
None => alert "Nada!"
| Some (n : int) => alert (show (n + 1))}/>
<button value="f2" onclick={s <- get s; s' <- get s'; f2 <- get f2; alert (f2 s s')}/><br/><br/>
<button value="A" onclick={r <- get r; alert r.A}/>
<button value="B" onclick={r <- get r; alert r.B}/><br/><br/>
<button value="render" onclick={t <- get t; alert (render t)}/><br/><br/>
<dyn signal={signal ht}/>
<button value="Set" onclick={s <- get s;
set ht <xml><button value="Dynamic!" onclick={alert s}/></xml>}/>
</body></xml>
|