X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypes%2FCoercion.lhs;h=9ebd00e7603ff78d7978a8d29b5cee78909fe220;hb=9aaa2bc98fc2f9ca5428ecb3eed40b8fa4c5f749;hp=b74a8af8b7bb518cff572a8c52aab1ac49fd9149;hpb=14ddfba2df68917958afb54142bb609c66fa2110;p=ghc-hetmet.git diff --git a/compiler/types/Coercion.lhs b/compiler/types/Coercion.lhs index b74a8af..9ebd00e 100644 --- a/compiler/types/Coercion.lhs +++ b/compiler/types/Coercion.lhs @@ -42,12 +42,15 @@ module Coercion ( transCoercionTyCon, leftCoercionTyCon, rightCoercionTyCon, instCoercionTyCon, -- needed by TysWiredIn + -- Comparison + coreEqCoercion, + -- CoercionI CoercionI(..), isIdentityCoercion, mkSymCoI, mkTransCoI, mkTyConAppCoI, mkAppTyCoI, mkFunTyCoI, - mkNoteTyCoI, mkForAllTyCoI, + mkForAllTyCoI, fromCoI, fromACo, mkClassPPredCoI, mkIParamPredCoI, mkEqPredCoI @@ -142,7 +145,6 @@ coercionKind (FunTy ty1 ty2) coercionKind (ForAllTy tv ty) = let (ty1, ty2) = coercionKind ty in (ForAllTy tv ty1, ForAllTy tv ty2) -coercionKind (NoteTy _ ty) = coercionKind ty coercionKind (PredTy (EqPred c1 c2)) = let k1 = coercionKindPredTy c1 k2 = coercionKindPredTy c2 in @@ -482,6 +484,12 @@ splitNewTypeRepCo_maybe (TyConApp tc tys) -- This case handled by coreView splitNewTypeRepCo_maybe _ = Nothing + +------------------------------------- +-- Syntactic equality of coercions + +coreEqCoercion :: Coercion -> Coercion -> Bool +coreEqCoercion = coreEqType \end{code} @@ -535,10 +543,6 @@ mkFunTyCoI _ IdCo _ IdCo = IdCo mkFunTyCoI ty1 coi1 ty2 coi2 = ACo $ FunTy (fromCoI coi1 ty1) (fromCoI coi2 ty2) -mkNoteTyCoI :: TyNote -> CoercionI -> CoercionI -mkNoteTyCoI _ IdCo = IdCo -mkNoteTyCoI note (ACo co) = ACo $ NoteTy note co - mkForAllTyCoI :: TyVar -> CoercionI -> CoercionI mkForAllTyCoI _ IdCo = IdCo mkForAllTyCoI tv (ACo co) = ACo $ ForAllTy tv co