changeset 212:ba4d7c33a45f

Testing type-class-parameterized functions
author Adam Chlipala <adamc@hcoop.net>
date Sat, 16 Aug 2008 14:36:17 -0400
parents e86411f647c6
children 0343557355fc
files src/lacweb.grm tests/type_class.lac
diffstat 2 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lacweb.grm	Sat Aug 16 14:32:18 2008 -0400
+++ b/src/lacweb.grm	Sat Aug 16 14:36:17 2008 -0400
@@ -427,6 +427,7 @@
        | FN SYMBOL kcolon kind DARROW eexp (ECAbs (kcolon, SYMBOL, kind, eexp), s (FNleft, eexpright))
        | FN SYMBOL COLON cexp DARROW eexp (EAbs (SYMBOL, SOME cexp, eexp), s (FNleft, eexpright))
        | FN SYMBOL DARROW eexp          (EAbs (SYMBOL, NONE, eexp), s (FNleft, eexpright))
+       | FN UNDER COLON cexp DARROW eexp (EAbs ("_", SOME cexp, eexp), s (FNleft, eexpright))
        | LBRACK cterm TWIDDLE cterm RBRACK DARROW eexp(EDisjoint (cterm1, cterm2, eexp), s (LBRACKleft, RBRACKright))
        | FN UNIT DARROW eexp            (let
                                              val loc = s (FNleft, eexpright)
--- a/tests/type_class.lac	Sat Aug 16 14:32:18 2008 -0400
+++ b/tests/type_class.lac	Sat Aug 16 14:36:17 2008 -0400
@@ -1,9 +1,18 @@
 class default t = t
 
-val string_default : default string = ""
+val string_default : default string = "Hi"
 val int_default : default int = 0
 
 val default : t :: Type -> default t -> t =
         fn t :: Type => fn d : default t => d
-val empty = default [string] _
+val hi = default [string] _
 val zero = default [int] _
+
+val frob : t :: Type -> default t -> t =
+        fn t :: Type => fn _ : default t => default [t] _
+val hi_again = frob [string] _
+val zero_again = frob [int] _
+
+val main : unit -> page = fn () => <html><body>
+        {cdata hi_again}
+</body></html>