[project @ 2001-01-04 16:22:55 by simonmar]
[ghc-hetmet.git] / ghc / compiler / typecheck / TcImprove.lhs
index 76e3064..9cc500f 100644 (file)
@@ -7,7 +7,8 @@ import Name             ( Name )
 import Class           ( Class, FunDep, className )
 import Unify           ( unifyTyListsX )
 import Subst           ( mkSubst, emptyInScopeSet, substTy )
-import TcEnv           ( tcGetInstEnv, classInstEnv )
+import TcEnv           ( tcGetInstEnv )
+import InstEnv ( classInstEnv )
 import TcMonad
 import TcType          ( TcType, TcTyVarSet, zonkTcType )
 import TcUnify         ( unifyTauTyLists )
@@ -18,7 +19,7 @@ import List           ( nub )
 \end{code}
 
 \begin{code}
-tcImprove :: LIE -> TcM s ()
+tcImprove :: LIE -> TcM ()
 -- Do unifications based on functional dependencies in the LIE
 tcImprove lie 
   = tcGetInstEnv       `thenNF_Tc` \ inst_env ->
@@ -57,7 +58,7 @@ tcImprove lie
     iterImprove nfdss
 
 
-iterImprove :: [(VarSet, Name, [FunDep TcType])] -> TcM s ()
+iterImprove :: [(VarSet, Name, [FunDep TcType])] -> TcM ()
 iterImprove [] = returnTc ()
 iterImprove cfdss
   = selfImprove pairImprove cfdss      `thenTc` \ change2 ->
@@ -125,7 +126,5 @@ zonkUnifyTys free ts1 ts2
   = mapTc zonkTcType ts1 `thenTc` \ ts1' ->
     mapTc zonkTcType ts2 `thenTc` \ ts2' ->
     -- pprTrace "zMT" (ppr (ts1', free, ts2')) $
-    case unifyTyListsX free ts2' ts1' of
-      Just subst -> returnTc (Just subst)
-      Nothing    -> returnTc Nothing
+    returnTc (unifyTyListsX free ts2' ts1')
 \end{code}