annotate demo/noisy.ur @ 2184:1ecef02f67c5

More Elaborate work to avoid instantiating unification variables with out-of-scope regular variables
author Adam Chlipala <adam@chlipala.net>
date Sat, 24 Oct 2015 17:23:07 -0400
parents e6bc6bbd7a32
children
rev   line source
adamc@651 1 datatype list t = Nil | Cons of t * list t
adamc@651 2
adamc@651 3 table t : { Id : int, A : string }
adamc@708 4 PRIMARY KEY Id
adamc@651 5
adamc@651 6 fun add id s =
adamc@651 7 dml (INSERT INTO t (Id, A) VALUES ({[id]}, {[s]}))
adamc@651 8
adamc@651 9 fun del id =
adamc@651 10 dml (DELETE FROM t WHERE t.Id = {[id]})
adamc@651 11
adamc@651 12 fun lookup id =
adamc@651 13 ro <- oneOrNoRows (SELECT t.A FROM t WHERE t.Id = {[id]});
adamc@651 14 case ro of
adamc@651 15 None => return None
adamc@651 16 | Some r => return (Some r.T.A)
adamc@651 17
adamc@651 18 fun check ls =
adamc@651 19 case ls of
adamc@651 20 Nil => return ()
adamc@651 21 | Cons (id, ls') =>
adamc@908 22 ao <- rpc (lookup id);
adamc@651 23 alert (case ao of
adamc@651 24 None => "Nada"
adamc@651 25 | Some a => a);
adamc@651 26 check ls'
adamc@651 27
adamc@782 28 fun main () =
adamc@651 29 idAdd <- source "";
adamc@651 30 aAdd <- source "";
adamc@651 31
adamc@651 32 idDel <- source "";
adamc@651 33
adamc@651 34 return <xml><body>
adam@1784 35 <button value="Check values of 1, 2, and 3" onclick={fn _ => check (Cons (1, Cons (2, Cons (3, Nil))))}/><br/>
adamc@651 36 <br/>
adam@1784 37 <button value="Add" onclick={fn _ => id <- get idAdd; a <- get aAdd; rpc (add (readError id) a)}/>
adamc@651 38 <ctextbox source={idAdd}/>
adamc@651 39 <ctextbox source={aAdd}/><br/>
adamc@651 40 <br/>
adam@1784 41 <button value="Delete" onclick={fn _ => id <- get idDel; rpc (del (readError id))}/>
adamc@651 42 <ctextbox source={idDel}/>
adamc@651 43 </body></xml>