diff demo/noisy.ur @ 651:bab524996fca

Noisy demo
author Adam Chlipala <adamc@hcoop.net>
date Tue, 10 Mar 2009 17:29:03 -0400
parents
children 1a317a707d71
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/demo/noisy.ur	Tue Mar 10 17:29:03 2009 -0400
@@ -0,0 +1,42 @@
+datatype list t = Nil | Cons of t * list t
+
+table t : { Id : int, A : string }
+
+fun add id s =
+    dml (INSERT INTO t (Id, A) VALUES ({[id]}, {[s]}))
+
+fun del id =
+    dml (DELETE FROM t WHERE t.Id = {[id]})
+
+fun lookup id =
+    ro <- oneOrNoRows (SELECT t.A FROM t WHERE t.Id = {[id]});
+    case ro of
+        None => return None
+      | Some r => return (Some r.T.A)
+
+fun check ls =
+    case ls of
+        Nil => return ()
+      | Cons (id, ls') =>
+        ao <- lookup id;
+        alert (case ao of
+                   None => "Nada"
+                 | Some a => a);
+        check ls'
+
+fun main () =
+    idAdd <- source "";
+    aAdd <- source "";
+
+    idDel <- source "";
+
+    return <xml><body>
+      <button value="Check values of 1, 2, and 3" onclick={check (Cons (1, Cons (2, Cons (3, Nil))))}/><br/>
+      <br/>
+      <button value="Add" onclick={id <- get idAdd; a <- get aAdd; add (readError id) a}/>
+      <ctextbox source={idAdd}/>
+      <ctextbox source={aAdd}/><br/>
+      <br/>
+      <button value="Delete" onclick={id <- get idDel; del (readError id)}/>
+      <ctextbox source={idDel}/>
+    </body></xml>