summaryrefslogtreecommitdiff
path: root/demo
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-03-10 12:44:40 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-03-10 12:44:40 -0400
commite2bfa72019653e309b7cdc3cf4ce4e6153712b1b (patch)
tree82f3cb492c30ab735fe779934eca0e58a1e6b461 /demo
parenta8f3cc9e254122906318531ef39b5cae89829ef4 (diff)
ListEdit demo, minus prose
Diffstat (limited to 'demo')
-rw-r--r--demo/listEdit.ur54
-rw-r--r--demo/listEdit.urp2
-rw-r--r--demo/listEdit.urs1
3 files changed, 57 insertions, 0 deletions
diff --git a/demo/listEdit.ur b/demo/listEdit.ur
new file mode 100644
index 00000000..1a9851a7
--- /dev/null
+++ b/demo/listEdit.ur
@@ -0,0 +1,54 @@
+datatype rlist = Nil | Cons of {Data : source string,
+ NewData : source string,
+ Tail : source rlist}
+
+fun showString ss =
+ s <- signal ss;
+ return <xml>{[s]}</xml>
+
+fun show rls =
+ v <- signal rls;
+ show' v
+
+and show' rl =
+ case rl of
+ Nil => return <xml/>
+ | Cons {Data = ss, NewData = ss', Tail = rls} => return <xml>
+ <dyn signal={showString ss}/>
+ <button value="Change to:" onclick={s <- get ss'; set ss s}/>
+ <ctextbox source={ss'}/><br/>
+ <dyn signal={show rls}/>
+ </xml>
+
+fun main () =
+ head <- source Nil;
+ tailP <- source head;
+ data <- source "";
+
+ let
+ fun add () =
+ data <- get data;
+ data <- source data;
+ ndata <- source "";
+ tail <- get tailP;
+ tail' <- source Nil;
+
+ let
+ val cons = Cons {Data = data, NewData = ndata, Tail = tail'}
+ in
+ set tail cons;
+ set tailP tail';
+
+ head' <- get head;
+ case head' of
+ Nil => set head cons
+ | _ => return ()
+ end
+ in
+ return <xml><body>
+ <ctextbox source={data}/> <button value="Add" onclick={add ()}/><br/>
+ <br/>
+
+ <dyn signal={show head}/>
+ </body></xml>
+ end
diff --git a/demo/listEdit.urp b/demo/listEdit.urp
new file mode 100644
index 00000000..592e0546
--- /dev/null
+++ b/demo/listEdit.urp
@@ -0,0 +1,2 @@
+
+listEdit
diff --git a/demo/listEdit.urs b/demo/listEdit.urs
new file mode 100644
index 00000000..6ac44e0b
--- /dev/null
+++ b/demo/listEdit.urs
@@ -0,0 +1 @@
+val main : unit -> transaction page