X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypes%2FFunDeps.lhs;h=7f9f0509e2f2a14f58a6d4a817dd9622fa38746b;hb=1ae354e107715a9e3fd4e2d67b61f868c090e4ae;hp=69533dc5100ccba85c8a93d3e84f041e88c2ca43;hpb=4d7ac0e3227c408de20af4ef7898028863327492;p=ghc-hetmet.git diff --git a/compiler/types/FunDeps.lhs b/compiler/types/FunDeps.lhs index 69533dc..7f9f050 100644 --- a/compiler/types/FunDeps.lhs +++ b/compiler/types/FunDeps.lhs @@ -494,16 +494,16 @@ badFunDeps cls_insts clas ins_tv_set ins_tys trimRoughMatchTcs :: [TyVar] -> FunDep TyVar -> [Maybe Name] -> [Maybe Name] -- Computing rough_tcs for a particular fundep --- class C a b c | a -> b where ... +-- class C a b c | a -> b where ... -- For each instance .... => C ta tb tc --- we want to match only on the types ta, tc; so our +-- we want to match only on the type ta; so our -- rough-match thing must similarly be filtered. --- Hence, we Nothing-ise the tb type right here -trimRoughMatchTcs clas_tvs (_,rtvs) mb_tcs +-- Hence, we Nothing-ise the tb and tc types right here +trimRoughMatchTcs clas_tvs (ltvs, _) mb_tcs = zipWith select clas_tvs mb_tcs where - select clas_tv mb_tc | clas_tv `elem` rtvs = Nothing - | otherwise = mb_tc + select clas_tv mb_tc | clas_tv `elem` ltvs = mb_tc + | otherwise = Nothing \end{code}