summaryrefslogtreecommitdiff
path: root/demo/noisy.ur
diff options
context:
space:
mode:
Diffstat (limited to 'demo/noisy.ur')
-rw-r--r--demo/noisy.ur43
1 files changed, 43 insertions, 0 deletions
diff --git a/demo/noisy.ur b/demo/noisy.ur
new file mode 100644
index 0000000..caf5240
--- /dev/null
+++ b/demo/noisy.ur
@@ -0,0 +1,43 @@
+datatype list t = Nil | Cons of t * list t
+
+table t : { Id : int, A : string }
+ PRIMARY KEY Id
+
+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 <- rpc (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={fn _ => check (Cons (1, Cons (2, Cons (3, Nil))))}/><br/>
+ <br/>
+ <button value="Add" onclick={fn _ => id <- get idAdd; a <- get aAdd; rpc (add (readError id) a)}/>
+ <ctextbox source={idAdd}/>
+ <ctextbox source={aAdd}/><br/>
+ <br/>
+ <button value="Delete" onclick={fn _ => id <- get idDel; rpc (del (readError id))}/>
+ <ctextbox source={idDel}/>
+ </body></xml>