diff src/especialize.sml @ 626:230654093b51

demo/hello compiles with kind polymorphism
author Adam Chlipala <adamc@hcoop.net>
date Sun, 22 Feb 2009 17:17:01 -0500
parents 3162bbf8e30f
children 9864b64b1700
line wrap: on
line diff
--- a/src/especialize.sml	Sun Feb 22 16:33:55 2009 -0500
+++ b/src/especialize.sml	Sun Feb 22 17:17:01 2009 -0500
@@ -43,7 +43,7 @@
 structure IM = IntBinaryMap
 structure IS = IntBinarySet
 
-val freeVars = U.Exp.foldB {kind = fn (_, xs) => xs,
+val freeVars = U.Exp.foldB {kind = fn (_, _, xs) => xs,
                             con = fn (_, _, xs) => xs,
                             exp = fn (bound, e, xs) =>
                                      case e of
@@ -80,7 +80,7 @@
     end
 
 fun squish fvs =
-    U.Exp.mapB {kind = fn k => k,
+    U.Exp.mapB {kind = fn _ => fn k => k,
                 con = fn _ => fn c => c,
                 exp = fn bound => fn e =>
                                      case e of
@@ -110,7 +110,6 @@
      decls : (string * int * con * exp * string) list
 }
 
-fun id x = x
 fun default (_, x, st) = (x, st)
 
 fun specialize' file =
@@ -281,9 +280,9 @@
                         end
             end
 
-        and specExp env = U.Exp.foldMapB {kind = id, con = default, exp = exp, bind = bind} env
+        and specExp env = U.Exp.foldMapB {kind = default, con = default, exp = exp, bind = bind} env
 
-        val specDecl = U.Decl.foldMapB {kind = id, con = default, exp = exp, decl = default, bind = bind}
+        val specDecl = U.Decl.foldMapB {kind = default, con = default, exp = exp, decl = default, bind = bind}
 
         fun doDecl (d, (st : state, changed)) =
             let