| 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
 - mkNomPrimEqPred :: Kind -> Type -> Type -> Type
 - mkClassPred :: Class -> [Type] -> PredType
 - isDictTy :: Type -> Bool
 - typeDeterminesValue :: Type -> Bool
 - isClassPred :: PredType -> Bool
 - isEqualityClass :: 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
 - mentionsIP :: Type -> Class -> [Type] -> Bool
 - isIPTyCon :: TyCon -> Bool
 - isIPClass :: Class -> Bool
 - isCallStackTy :: Type -> Bool
 - isCallStackPred :: Class -> [Type] -> Maybe FastString
 - isCallStackPredTy :: Type -> Bool
 - isIPPred_maybe :: Class -> [Type] -> Maybe (Type, Type)
 - 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 Source #
isEvVarType :: Type -> Bool Source #
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 Source #
getEqPredRole :: PredType -> Role Source #
predTypeEqRel :: PredType -> EqRel Source #
Get the equality relation relevant for a pred type.
mkPrimEqPred :: Type -> Type -> Type Source #
Creates a primitive nominal type equality predicate. t1 ~# t2 Invariant: the types are not Coercions
mkReprPrimEqPred :: Type -> Type -> Type Source #
Creates a primitive representational type equality predicate. t1 ~R# t2 Invariant: the types are not Coercions
mkPrimEqPredRole :: Role -> Type -> Type -> PredType Source #
Makes a lifted equality predicate at the given role
mkNomPrimEqPred :: Kind -> Type -> Type -> Type Source #
Creates a primitive nominal type equality predicate with an explicit (but homogeneous) kind: (~#) k k ty1 ty2
typeDeterminesValue :: Type -> Bool Source #
isClassPred :: PredType -> Bool Source #
isEqualityClass :: Class -> Bool Source #
isCTupleClass :: Class -> Bool Source #
getClassPredTys :: HasDebugCallStack => PredType -> (Class, [Type]) Source #
classMethodTy :: Id -> Type Source #
isIPLikePred :: Type -> Bool Source #
isCallStackTy :: Type -> Bool Source #
Is a type a CallStack?
isCallStackPred :: Class -> [Type] -> Maybe FastString Source #
Is a PredType a CallStack implicit parameter?
If so, return the name of the parameter.
isCallStackPredTy :: Type -> Bool Source #