summaryrefslogtreecommitdiff
path: root/tests/dlist.ur
diff options
context:
space:
mode:
Diffstat (limited to 'tests/dlist.ur')
-rw-r--r--tests/dlist.ur23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/dlist.ur b/tests/dlist.ur
new file mode 100644
index 0000000..0733a0d
--- /dev/null
+++ b/tests/dlist.ur
@@ -0,0 +1,23 @@
+datatype dlist = Nil | Cons of string * source dlist
+
+fun delist dl =
+ case dl of
+ Nil => <xml>[]</xml>
+ | Cons (x, s) => <xml>{[x]} :: ({delistSource s})</xml>
+
+and delistSource s = <xml><dyn signal={dl <- signal s; return (delist dl)}/></xml>
+
+fun main () : transaction page =
+ ns <- source Nil;
+ s <- source ns;
+ tb <- source "";
+ return <xml><body>
+ <dyn signal={s <- signal s; return (delistSource s)}/><br/>
+ <br/>
+ <ctextbox source={tb}/>
+ <button value="Add" onclick={hd <- get tb;
+ tl <- get s;
+ s' <- source (Cons (hd, tl));
+ set s s'}/>
+ <button value="Reset" onclick={set s ns}/>
+ </body></xml>