diff src/elaborate.sml @ 674:fab5998b840e

Type class reductions, but no inclusions yet
author Adam Chlipala <adamc@hcoop.net>
date Thu, 26 Mar 2009 14:37:31 -0400
parents ae374df5ccbd
children 70cbdcf5989b
line wrap: on
line diff
--- a/src/elaborate.sml	Tue Mar 24 15:35:46 2009 -0400
+++ b/src/elaborate.sml	Thu Mar 26 14:37:31 2009 -0400
@@ -1480,6 +1480,14 @@
         in
             (L'.CApp (f, x), loc)
         end
+      | L'.TFun (c1, c2) =>
+        let
+            val c1 = normClassConstraint env c1
+            val c2 = normClassConstraint env c2
+        in
+            (L'.TFun (c1, c2), loc)
+        end
+      | L'.TCFun (expl, x, k, c1) => (L'.TCFun (expl, x, k, normClassConstraint env c1), loc)
       | L'.CUnif (_, _, _, ref (SOME c)) => normClassConstraint env c
       | _ => (c, loc)
 
@@ -3045,7 +3053,7 @@
 
                     val () = checkCon env e' et c'
 
-                    val c = normClassConstraint env c'
+                    val c' = normClassConstraint env c'
                     val (env', n) = E.pushENamed env x c'
                 in
                     (*prefaces "DVal" [("x", Print.PD.string x),
@@ -3068,6 +3076,7 @@
                                                 val (c', _, gs1) = case co of
                                                                        NONE => (cunif (loc, ktype), ktype, [])
                                                                      | SOME c => elabCon (env, denv) c
+                                                val c' = normClassConstraint env c'
                                             in
                                                 ((x, c', e), enD gs1 @ gs)
                                             end) gs vis