annotate tests/div.ur @ 2095:d9f918b79b5a

List.mem
author Adam Chlipala <adam@chlipala.net>
date Tue, 23 Dec 2014 14:41:23 -0500
parents 15e0c935c91b
children
rev   line source
adam@1619 1 functor Make(M : sig
adam@1619 2 type t
adam@1619 3 val read_t : read t
adam@1619 4 val show_t : show t
adam@1619 5 val num_t : num t
adam@1619 6 end) = struct
adam@1619 7 fun calculate (n1, n2) = return <xml><body>
adam@1619 8 {[readError n1 / readError n2 : M.t]}<br/>
adam@1619 9 {[readError n1 % readError n2 : M.t]}<br/>
adam@1619 10 </body></xml>
adam@1619 11
adam@1619 12 fun main () =
adam@1619 13 s1 <- source "";
adam@1619 14 s2 <- source "";
adam@1619 15 s3 <- source "";
adam@1619 16 s4 <- source "";
adam@1619 17 return <xml><body>
adam@1619 18 <h1>Client-side</h1>
adam@1619 19
adam@1619 20 <ctextbox source={s1}/> / <ctextbox source={s2}/>
adam@1619 21 <button value="=" onclick={n1 <- get s1;
adam@1619 22 n2 <- get s2;
adam@1619 23 set s3 (show (readError n1 / readError n2 : M.t));
adam@1619 24 set s4 (show (readError n1 % readError n2 : M.t))}/>
adam@1619 25 <dyn signal={n <- signal s3; return (txt n)}/>,
adam@1619 26 <dyn signal={n <- signal s4; return (txt n)}/>
adam@1619 27
adam@1619 28 <h1>Server-side</h1>
adam@1619 29
adam@1619 30 <form>
adam@1619 31 <textbox{#1}/> / <textbox{#2}/>
adam@1619 32 <submit value="=" action={calculate}/>
adam@1619 33 </form>
adam@1619 34 </body></xml>
adam@1619 35 end
adam@1619 36
adam@1619 37 structure Int = Make(struct type t = int end)
adam@1619 38 structure Float = Make(struct type t = float end)
adam@1619 39
adam@1619 40 fun main () : transaction page = return <xml><body>
adam@1619 41 <li><a link={Int.main ()}>Int</a></li>
adam@1619 42 <li><a link={Float.main ()}>Float</a></li>
adam@1619 43 </body></xml>