diff tests/rpcDE.ur @ 638:3ee6bb48f6e8

RPC returning an enumeration
author Adam Chlipala <adamc@hcoop.net>
date Sun, 08 Mar 2009 12:37:42 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/rpcDE.ur	Sun Mar 08 12:37:42 2009 -0400
@@ -0,0 +1,30 @@
+datatype result = Neg | Zero | Pos
+
+table t : {A : int}
+
+fun main () : transaction page =
+    let
+        fun check () =
+            r <- oneRow (SELECT SUM(t.A) AS X FROM t);
+            return (if r.X < 0 then
+                        Neg
+                    else if r.X = 0 then
+                        Zero
+                    else
+                        Pos)
+
+        fun show r =
+            case r of
+                Neg => <xml>-</xml>
+              | Zero => <xml>0</xml>
+              | Pos => <xml>+</xml>
+    in
+        s <- source Zero;
+        return <xml><body>
+          <button value="Get It On!"
+                  onclick={r <- check ();
+                           set s r}/><br/>
+          <br/>
+          Current: <dyn signal={r <- signal s; return (show r)}/>
+        </body></xml>
+    end