diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-06-08 14:25:27 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-06-08 14:25:27 -0400 |
commit | 33cf695e0ba9586f05242b7d3595c94ed5c99b98 (patch) | |
tree | 2107ff15033d8138633b227ee9e6323c7346b788 /src/elaborate.sml | |
parent | 59cf4e73d9d6998ea4a83aa38c75c95ed462779f (diff) |
Unification wildcards
Diffstat (limited to 'src/elaborate.sml')
-rw-r--r-- | src/elaborate.sml | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/elaborate.sml b/src/elaborate.sml index 9e457499..9e63ecea 100644 --- a/src/elaborate.sml +++ b/src/elaborate.sml @@ -36,13 +36,6 @@ structure U = ElabUtil open Print open ElabPrint -fun elabKind (k, loc) = - case k of - L.KType => (L'.KType, loc) - | L.KArrow (k1, k2) => (L'.KArrow (elabKind k1, elabKind k2), loc) - | L.KName => (L'.KName, loc) - | L.KRecord k => (L'.KRecord (elabKind k), loc) - fun elabExplicitness e = case e of L.Explicit => L'.Explicit @@ -183,6 +176,14 @@ fun cunif k = end +fun elabKind (k, loc) = + case k of + L.KType => (L'.KType, loc) + | L.KArrow (k1, k2) => (L'.KArrow (elabKind k1, elabKind k2), loc) + | L.KName => (L'.KName, loc) + | L.KRecord k => (L'.KRecord (elabKind k), loc) + | L.KWild => kunif () + fun elabCon env (c, loc) = case c of L.CAnnot (c, k) => @@ -283,6 +284,13 @@ fun elabCon env (c, loc) = ((L'.CConcat (c1', c2'), loc), k) end + | L.CWild k => + let + val k' = elabKind k + in + (cunif k', k') + end + fun kunifsRemain k = case k of L'.KUnif (_, ref NONE) => true |