blob: 69a092751cec1ccaf14362ccac447c7b4a953b3b (
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
|
functor Make(M : sig
type t
val read_t : read t
val show_t : show t
val num_t : num t
end) = struct
fun calculate (n1, n2) = return <xml><body>
{[readError n1 / readError n2 : M.t]}<br/>
{[readError n1 % readError n2 : M.t]}<br/>
</body></xml>
fun main () =
s1 <- source "";
s2 <- source "";
s3 <- source "";
s4 <- source "";
return <xml><body>
<h1>Client-side</h1>
<ctextbox source={s1}/> / <ctextbox source={s2}/>
<button value="=" onclick={n1 <- get s1;
n2 <- get s2;
set s3 (show (readError n1 / readError n2 : M.t));
set s4 (show (readError n1 % readError n2 : M.t))}/>
<dyn signal={n <- signal s3; return (txt n)}/>,
<dyn signal={n <- signal s4; return (txt n)}/>
<h1>Server-side</h1>
<form>
<textbox{#1}/> / <textbox{#2}/>
<submit value="=" action={calculate}/>
</form>
</body></xml>
end
structure Int = Make(struct type t = int end)
structure Float = Make(struct type t = float end)
fun main () : transaction page = return <xml><body>
<li><a link={Int.main ()}>Int</a></li>
<li><a link={Float.main ()}>Float</a></li>
</body></xml>
|