Mercurial > urweb
annotate tests/nested.ur @ 944:da3ec6014d2f
Filters implementation type-checking
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Tue, 15 Sep 2009 15:48:53 -0400 |
parents | 8e9f2d247dba |
children |
rev | line source |
---|---|
adamc@880 | 1 table t : {A : int, B : int} |
adamc@880 | 2 |
adamc@880 | 3 fun init () = |
adamc@880 | 4 dml (DELETE FROM t WHERE TRUE); |
adamc@880 | 5 dml (INSERT INTO t (A, B) VALUES (1, 2)); |
adamc@880 | 6 dml (INSERT INTO t (A, B) VALUES (2, 3)) |
adamc@880 | 7 |
adamc@880 | 8 fun easy () = |
adamc@880 | 9 queryX' (SELECT MAX(t.A) AS M FROM t) |
adamc@880 | 10 (fn r => |
adamc@880 | 11 queryX (SELECT * FROM t WHERE t.A = {[r.M]}) |
adamc@880 | 12 (fn r => <xml>({[r.T.A]}, {[r.T.B]})</xml>)) |
adamc@880 | 13 |
adamc@880 | 14 fun hard id = |
adamc@880 | 15 queryX' (SELECT t.B AS N FROM t WHERE t.A = {[id]}) |
adamc@880 | 16 (fn r => |
adamc@880 | 17 b <- hard r.N; |
adamc@880 | 18 return <xml>({[id]}, {[r.N]}); {b}</xml>) |
adamc@880 | 19 |
adamc@880 | 20 fun doit () = |
adamc@880 | 21 init (); |
adamc@880 | 22 b1 <- easy (); |
adamc@880 | 23 b2 <- hard 1; |
adamc@880 | 24 return <xml><body> |
adamc@880 | 25 {b1}<br/> |
adamc@880 | 26 {b2} |
adamc@880 | 27 </body></xml> |
adamc@880 | 28 |
adamc@880 | 29 fun main () = return <xml><body><form><submit action={doit}/></form></body></xml> |