diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-08-16 15:09:53 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-08-16 15:09:53 -0400 |
commit | 62c0731399525d736de1c4e303c1abd1677a8d0c (patch) | |
tree | 4c9288ddb1fba9991f128d3f6569c0382303dc72 | |
parent | 6cac02596e21666de5658f83957d3fa7d7b60a8c (diff) |
Compiling a con-tuple-using test case
-rw-r--r-- | src/reduce.sml | 3 | ||||
-rw-r--r-- | tests/ctuple.lac | 9 | ||||
-rw-r--r-- | tests/tuple.lac | 2 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/reduce.sml b/src/reduce.sml index c2359c26..e8d51da7 100644 --- a/src/reduce.sml +++ b/src/reduce.sml @@ -123,6 +123,9 @@ fun con env c = (_, _, SOME c') => #1 c' | _ => c) | CConcat ((CRecord (k, xcs1), loc), (CRecord (_, xcs2), _)) => CRecord (k, xcs1 @ xcs2) + + | CProj ((CTuple cs, _), n) => #1 (List.nth (cs, n - 1)) + | _ => c and reduceCon env = U.Con.mapB {kind = kind, con = con, bind = bindC} env diff --git a/tests/ctuple.lac b/tests/ctuple.lac new file mode 100644 index 00000000..68c1301f --- /dev/null +++ b/tests/ctuple.lac @@ -0,0 +1,9 @@ +val page = fn p :: (Type * Type) => fn f : p.1 -> string => fn x : p.1 => <html><body> + {cdata (f x)} +</body></html> + +val page_string = page [(string, int)] (fn x => x) + +val main : unit -> page = fn () => <html><body> + <a link={page_string "Hi"}>Hi</a> +</body></html> diff --git a/tests/tuple.lac b/tests/tuple.lac index fb14aad9..555cfd0c 100644 --- a/tests/tuple.lac +++ b/tests/tuple.lac @@ -10,4 +10,4 @@ val bizarro_x = case x of (a, b, c) => (c, a, b) val main : unit -> page = fn () => <html><body> {cdata bizarro_x.1} -</body></html>
\ No newline at end of file +</body></html> |