Mercurial > urweb
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>