summaryrefslogtreecommitdiff
path: root/src/explify.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-08-16 14:45:23 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-08-16 14:45:23 -0400
commite9456cb231725d65a9cdd11dc3d4549fe7254e06 (patch)
treed2582b97f013e5759f2c0aa3f9bc030b74e92991 /src/explify.sml
parent70cd2b655dd741ad04a98dbe6685ec2ec9e11fdd (diff)
Explifying type classes
Diffstat (limited to 'src/explify.sml')
-rw-r--r--src/explify.sml8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/explify.sml b/src/explify.sml
index 50a1851b..f5d19a17 100644
--- a/src/explify.sml
+++ b/src/explify.sml
@@ -39,7 +39,7 @@ fun explifyKind (k, loc) =
| L.KRecord k => (L'.KRecord (explifyKind k), loc)
| L.KUnit => (L'.KUnit, loc)
- | L.KTuple _ => raise Fail "Explify KTuple"
+ | L.KTuple ks => (L'.KTuple (map explifyKind ks), loc)
| L.KError => raise Fail ("explifyKind: KError at " ^ EM.spanToString loc)
| L.KUnif (_, _, ref (SOME k)) => explifyKind k
@@ -68,8 +68,8 @@ fun explifyCon (c, loc) =
| L.CUnit => (L'.CUnit, loc)
- | L.CTuple _ => raise Fail "Explify CTuple"
- | L.CProj _ => raise Fail "Explify CProj"
+ | L.CTuple cs => (L'.CTuple (map explifyCon cs), loc)
+ | L.CProj (c, n) => (L'.CProj (explifyCon c, n), loc)
| L.CError => raise Fail ("explifyCon: CError at " ^ EM.spanToString loc)
| L.CUnif (_, _, _, ref (SOME c)) => explifyCon c
@@ -160,6 +160,8 @@ fun explifyDecl (d, loc : EM.span) =
| L.DConstraint (c1, c2) => NONE
| L.DExport (en, sgn, str) => SOME (L'.DExport (en, explifySgn sgn, explifyStr str), loc)
| L.DTable _ => raise Fail "Explify DTable"
+ | L.DClass (x, n, c) => SOME (L'.DCon (x, n,
+ (L'.KArrow ((L'.KType, loc), (L'.KType, loc)), loc), explifyCon c), loc)
and explifyStr (str, loc) =
case str of