annotate tests/where.ur @ 2196:100352dbae36

Fix tricky case of functor signature subsumption
author Adam Chlipala <adam@chlipala.net>
date Fri, 27 Nov 2015 15:28:12 -0500
parents 8bb46d87b074
children
rev   line source
adamc@209 1 table t1 : {A : int, B : string, C : float}
adamc@209 2 table t2 : {A : float, D : int}
adamc@209 3
adamc@209 4 val q1 = (SELECT * FROM t1)
adamc@209 5 val q2 = (SELECT * FROM t1 WHERE TRUE)
adamc@209 6 val q3 = (SELECT * FROM t1 WHERE FALSE)
adamc@210 7 val q4 = (SELECT * FROM t1 WHERE {True})
adamc@219 8 val q5 = (SELECT * FROM t1 WHERE {1} = {1})
adamc@219 9 val q6 = (SELECT * FROM t1 WHERE {"Hi"} < {"Bye"})
adamc@279 10 val q7 = (SELECT * FROM t1 WHERE {1} = {1} AND NOT ({"Hi"} <= {"Bye"}))
adamc@222 11 val q8 = (SELECT * FROM t1 WHERE t1.A = 1 OR t1.C < 3.0)
adamc@255 12
adamc@255 13 datatype list a = Nil | Cons of a * list a
adamc@255 14
adamc@255 15 val r1 : transaction (list {A : int, B : string, C : float}) =
adamc@264 16 query q7
adamc@255 17 (fn fs acc => return (Cons (fs.T1, acc)))
adamc@255 18 Nil
adamc@255 19
adamc@255 20 val r2 : transaction string =
adamc@255 21 ls <- r1;
adamc@255 22 return (case ls of
adamc@255 23 Nil => "Problem"
adamc@255 24 | Cons ({B = b, ...}, _) => b)
adamc@255 25
adamc@255 26 val main : unit -> transaction page = fn () =>
adamc@255 27 s <- r2;
adamc@255 28 return <html><body>
adamc@255 29 {cdata s}
adamc@255 30 </body></html>