diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-12-19 10:27:58 -0500 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-12-19 10:27:58 -0500 |
commit | a2854d6b8db55b9c6e69d16262ea182ab9bd307d (patch) | |
tree | 2ae9890ec2aaa8c2404ce09448a078fec7857bbb /src/elaborate.sml | |
parent | ba83ee9a9b3d2539b820c9fcb1cb7cd42226da6c (diff) |
Monad type class seems to be working
Diffstat (limited to 'src/elaborate.sml')
-rw-r--r-- | src/elaborate.sml | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/elaborate.sml b/src/elaborate.sml index 05e08c81..c18cfb49 100644 --- a/src/elaborate.sml +++ b/src/elaborate.sml @@ -3548,7 +3548,15 @@ fun elabFile basis topStr topSgn env file = ("c1", p_con env c1), ("c2", p_con env c2)]; raise Fail "Unresolved constraint in top.ur")) - | TypeClass _ => raise Fail "Unresolved type class constraint in top.ur") gs + | TypeClass (env, c, r, loc) => + let + val c = normClassKey env c + in + case E.resolveClass env c of + SOME e => r := SOME e + | NONE => expError env (Unresolvable (loc, c)) + end) gs + val () = subSgn (env', D.empty) topSgn' topSgn val (env', top_n) = E.pushStrNamed env' "Top" topSgn |