| 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
- data SpecialPred = IsReflPrimPred Type Type
- mkIsReflPrimPred :: Type -> Type -> PredType
- isIsReflPrimPred :: Pred -> Bool
- 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
- isCallStackTy :: Type -> Bool
- isCallStackPred :: Class -> [Type] -> Maybe FastString
- isCallStackPredTy :: Type -> Bool
- isIPPred_maybe :: Type -> Maybe (FastString, 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.
Constructors
| ClassPred Class [Type] | A typeclass predicate. |
| EqPred EqRel Type Type | A type equality predicate. |
| IrredPred PredType | An irreducible predicate. |
| ForAllPred [TyVar] [PredType] PredType | A quantified predicate. See Note [Quantified constraints] in GHC.Tc.Solver.Canonical |
| SpecialPred SpecialPred | A special predicate, used internally in GHC. See #20000. |
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 type equality predicate. Invariant: the types are not Coercions
mkPrimEqPredRole :: Role -> Type -> Type -> PredType Source #
Makes a lifted equality predicate at the given role
mkHeteroPrimEqPred :: Kind -> Kind -> Type -> Type -> Type Source #
Creates a primitive type equality predicate with explicit kinds
mkHeteroReprPrimEqPred :: Kind -> Kind -> Type -> Type -> Type Source #
Creates a primitive representational type equality predicate with explicit kinds
data SpecialPred Source #
SpecialPred describes all the special predicates
that are currently used in GHC.
These are different from the special typeclasses
(such as KnownNat, Typeable, Coercible, ...), as special predicates
can't be expressed as typeclasses, as they hold evidence of a different kind.
Constructors
| IsReflPrimPred Type Type | 'IsRefl#'. |
Instances
| Outputable SpecialPred Source # | |
Defined in GHC.Core.Predicate Methods ppr :: SpecialPred -> SDoc Source # | |
isIsReflPrimPred :: Pred -> Bool Source #
isClassPred :: PredType -> Bool Source #
isEqPredClass :: 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 #
isIPPred_maybe :: Type -> Maybe (FastString, Type) Source #
Decomposes a predicate if it is an implicit parameter. Does not look in superclasses. See also [Local implicit parameters].