X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypes%2FFamInstEnv.lhs;h=b851ec1ee64d83c4ea8f27d159b5c0a738cc8f00;hb=3a2b38084cfea1c88009c4d9236fa403bdda25b4;hp=5ff013972d2c4dce1c029798a0cc7228c50f86fb;hpb=380512de6eef0cbb17431d9e64007a9320914e23;p=ghc-hetmet.git diff --git a/compiler/types/FamInstEnv.lhs b/compiler/types/FamInstEnv.lhs index 5ff0139..b851ec1 100644 --- a/compiler/types/FamInstEnv.lhs +++ b/compiler/types/FamInstEnv.lhs @@ -6,13 +6,15 @@ FamInstEnv: Type checked family instance declarations \begin{code} module FamInstEnv ( - FamInst(..), famInstTyCon, pprFamInst, pprFamInstHdr, pprFamInsts, + FamInst(..), famInstTyCon, famInstTyVars, + pprFamInst, pprFamInstHdr, pprFamInsts, famInstHead, mkLocalFamInst, mkImportedFamInst, - FamInstEnv, emptyFamInstEnv, extendFamInstEnv, extendFamInstEnvList, + FamInstEnvs, FamInstEnv, emptyFamInstEnv, + extendFamInstEnv, extendFamInstEnvList, famInstEnvElts, familyInstances, - lookupFamInstEnvExact, lookupFamInstEnv, lookupFamInstEnvUnify + lookupFamInstEnv, lookupFamInstEnvUnify ) where #include "HsVersions.h" @@ -32,7 +34,6 @@ import UniqFM import Outputable import Maybe -import Monad \end{code} @@ -60,6 +61,8 @@ data FamInst -- famInstTyCon :: FamInst -> TyCon famInstTyCon = fi_tycon + +famInstTyVars = fi_tvs \end{code} \begin{code} @@ -140,6 +143,9 @@ InstEnv maps a family name to the list of known instances for that family. \begin{code} type FamInstEnv = UniqFM FamilyInstEnv -- Maps a family to its instances +type FamInstEnvs = (FamInstEnv, FamInstEnv) + -- External package inst-env, Home-package inst-env + data FamilyInstEnv = FamIE [FamInst] -- The instances for a particular family, in any order Bool -- True <=> there is an instance of form T a b c @@ -187,6 +193,7 @@ This is used when we want the @TyCon@ of a particular family instance (e.g., during deriving classes). \begin{code} +{- NOT NEEDED ANY MORE lookupFamInstEnvExact :: (FamInstEnv -- External package inst-env ,FamInstEnv) -- Home-package inst-env -> TyCon -> [Type] -- What we are looking for @@ -224,6 +231,7 @@ lookupFamInstEnvExact (pkg_ie, home_ie) fam tys -- No match => try next | otherwise = find rest +-} \end{code} @lookupFamInstEnv@ looks up in a @FamInstEnv@, using a one-way match. @@ -232,8 +240,7 @@ families), and then, it doesn't matter which match we choose (as the instances are guaranteed confluent). \begin{code} -lookupFamInstEnv :: (FamInstEnv -- External package inst-env - ,FamInstEnv) -- Home-package inst-env +lookupFamInstEnv :: FamInstEnvs -> TyCon -> [Type] -- What we are looking for -> [(TvSubst, FamInst)] -- Successful matches lookupFamInstEnv (pkg_ie, home_ie) fam tys