[make matching more robust. create boxes of the appropriate kind
John Meacham <john@repetae.net>**20051209070019] hunk ./FrontEnd/Tc/Unify.hs 36
-        subsumes s2 s4
+        s2 `subsumes` s4
hunk ./FrontEnd/Tc/Unify.hs 38
-    sub t@(TArrow _ _) (TBox _ box) = do
-        (oa,a) <- newBox Star
-        (ob,b) <- newBox Star
+    sub t@(TArrow s1 s2) (TBox _ box) = do
+        (oa,a) <- newBox (kind s1)
+        (ob,b) <- newBox (kind s2)
hunk ./FrontEnd/Tc/Unify.hs 103
-        True -> sequence_ [boxyMatch x y | x <- as | y <- bs] >> return False
+        True | length as == length bs -> sequence_ [boxyMatch x y | x <- as | y <- bs] >> return False
+        _ ->   fail $ "constructor args mismatch: " ++ show (a,b)
hunk ./FrontEnd/Tc/Unify.hs 108
-    bm (TForAll vs (ps :=> t)) (TBox _ box) = do
-        (ra,a) <- newBox Star
+    bm (TForAll vs (ps :=> t)) (TBox k box) = do
+        (ra,a) <- newBox k
hunk ./FrontEnd/Tc/Unify.hs 111
-        a <- ra
+        a <- ra >>= findType