annotate tests/query.ur @ 2195:18e6fb487880
Reduce: add reduction in some spots previously missed, associated with 'case' return types
author |
Adam Chlipala <adam@chlipala.net> |
date |
Wed, 25 Nov 2015 18:48:17 -0500 |
parents |
5f9b9972e6b8 |
children |
|
rev |
line source |
adamc@253
|
1 table t1 : {A : int, B : string, C : float, D : bool}
|
adamc@243
|
2 table t2 : {A : float, D : int}
|
adamc@243
|
3
|
adamc@243
|
4 datatype list a = Nil | Cons of a * list a
|
adamc@243
|
5
|
adamc@254
|
6 val q1 = (SELECT * FROM t1)
|
adamc@253
|
7
|
adamc@253
|
8 val r1 : transaction (list {A : int, B : string, C : float, D : bool}) =
|
adamc@748
|
9 query q1
|
adamc@748
|
10 (fn fs acc => return (Cons (fs.T1, acc)))
|
adamc@748
|
11 Nil
|
adamc@243
|
12
|
adamc@249
|
13 val r2 : transaction string =
|
adamc@748
|
14 ls <- r1;
|
adamc@748
|
15 return (case ls of
|
adamc@748
|
16 Nil => "Problem"
|
adamc@748
|
17 | Cons ({B = b, ...}, _) => b)
|
adamc@249
|
18
|
adamc@748
|
19 fun main () : transaction page =
|
adamc@748
|
20 s <- r2;
|
adamc@748
|
21 return <xml><body>
|
adamc@748
|
22 {cdata s}
|
adamc@748
|
23 </body></xml>
|