summaryrefslogtreecommitdiff
path: root/demo/noisy.ur
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-03-10 17:29:03 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-03-10 17:29:03 -0400
commitfc1611149a6b6a4a56ae974152f16fb88ae89a6e (patch)
treeae4fb9cd2b1daf1601ab9ad335fbb9574d372f8f /demo/noisy.ur
parent3a94a798557f71cba0fdfdb54cdf431c44a4ef1d (diff)
Noisy demo
Diffstat (limited to 'demo/noisy.ur')
-rw-r--r--demo/noisy.ur42
1 files changed, 42 insertions, 0 deletions
diff --git a/demo/noisy.ur b/demo/noisy.ur
new file mode 100644
index 00000000..118af737
--- /dev/null
+++ b/demo/noisy.ur
@@ -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>