summaryrefslogtreecommitdiff
path: root/src/elaborate.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-12-19 10:27:58 -0500
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-12-19 10:27:58 -0500
commit3aac0d79c1ad2da6358cf6619c62a56ddd2ed195 (patch)
tree2ae9890ec2aaa8c2404ce09448a078fec7857bbb /src/elaborate.sml
parent55c83dd7bd3e7cefe40b70f3480dda746dc3384f (diff)
Monad type class seems to be working
Diffstat (limited to 'src/elaborate.sml')
-rw-r--r--src/elaborate.sml10
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