Safe Haskell | None |
---|---|
Language | Haskell2010 |
GHC.Core.Predicate
Synopsis
- data Pred
- classifyPredType :: PredType -> Pred
- isPredTy :: HasDebugCallStack => Type -> Bool
- isEvVarType :: Type -> Bool
- data EqRel
- eqRelRole :: EqRel -> Role
- isEqPrimPred :: PredType -> Bool
- isEqPred :: PredType -> Bool
- getEqPredTys :: PredType -> (Type, Type)
- getEqPredTys_maybe :: PredType -> Maybe (Role, Type, Type)
- getEqPredRole :: PredType -> Role
- predTypeEqRel :: PredType -> EqRel
- mkPrimEqPred :: Type -> Type -> Type
- mkReprPrimEqPred :: Type -> Type -> Type
- mkPrimEqPredRole :: Role -> Type -> Type -> PredType
- mkHeteroPrimEqPred :: Kind -> Kind -> Type -> Type -> Type
- mkHeteroReprPrimEqPred :: Kind -> Kind -> Type -> Type -> Type
- mkClassPred :: Class -> [Type] -> PredType
- isDictTy :: Type -> Bool
- isClassPred :: PredType -> Bool
- isEqPredClass :: Class -> Bool
- isCTupleClass :: Class -> Bool
- getClassPredTys :: HasDebugCallStack => PredType -> (Class, [Type])
- getClassPredTys_maybe :: PredType -> Maybe (Class, [Type])
- classMethodTy :: Id -> Type
- classMethodInstTy :: Id -> [Type] -> Type
- isIPLikePred :: Type -> Bool
- hasIPSuperClasses :: Class -> [Type] -> Bool
- isIPTyCon :: TyCon -> Bool
- isIPClass :: Class -> Bool
- type DictId = EvId
- isEvVar :: Var -> Bool
- isDictId :: Id -> Bool
Documentation
A predicate in the solver. The solver tries to prove Wanted predicates from Given ones.
classifyPredType :: PredType -> Pred #
isPredTy :: HasDebugCallStack => Type -> Bool #
isEvVarType :: Type -> Bool #
A choice of equality relation. This is separate from the type Role
because Phantom
does not define a (non-trivial) equality relation.
isEqPrimPred :: PredType -> Bool #
getEqPredTys :: PredType -> (Type, Type) #
getEqPredRole :: PredType -> Role #
predTypeEqRel :: PredType -> EqRel #
Get the equality relation relevant for a pred type.
mkPrimEqPred :: Type -> Type -> Type #
Creates a primitive type equality predicate. Invariant: the types are not Coercions
mkReprPrimEqPred :: Type -> Type -> Type #
mkPrimEqPredRole :: Role -> Type -> Type -> PredType #
Makes a lifted equality predicate at the given role
mkHeteroPrimEqPred :: Kind -> Kind -> Type -> Type -> Type #
Creates a primitive type equality predicate with explicit kinds
mkHeteroReprPrimEqPred :: Kind -> Kind -> Type -> Type -> Type #
Creates a primitive representational type equality predicate with explicit kinds
mkClassPred :: Class -> [Type] -> PredType #
isClassPred :: PredType -> Bool #
isEqPredClass :: Class -> Bool #
isCTupleClass :: Class -> Bool #
getClassPredTys :: HasDebugCallStack => PredType -> (Class, [Type]) #
classMethodTy :: Id -> Type #
classMethodInstTy :: Id -> [Type] -> Type #
isIPLikePred :: Type -> Bool #
hasIPSuperClasses :: Class -> [Type] -> Bool #