diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-03-10 12:44:40 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-03-10 12:44:40 -0400 |
commit | e2bfa72019653e309b7cdc3cf4ce4e6153712b1b (patch) | |
tree | 82f3cb492c30ab735fe779934eca0e58a1e6b461 /demo | |
parent | a8f3cc9e254122906318531ef39b5cae89829ef4 (diff) |
ListEdit demo, minus prose
Diffstat (limited to 'demo')
-rw-r--r-- | demo/listEdit.ur | 54 | ||||
-rw-r--r-- | demo/listEdit.urp | 2 | ||||
-rw-r--r-- | demo/listEdit.urs | 1 |
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 |