| 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 = ConcretePrimPred
- specialPredTyCon :: SpecialPred -> TyCon
- 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 Type | A special predicate, used internally in GHC. The meaning of the type argument is dictated by the Example: |
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
| ConcretePrimPred | A When the first argument to the forall k. k -> TupleRep '[] See Note [The Concrete mechanism] in GHC.Tc.Utils.Concrete for further details. |
Instances
| Eq SpecialPred Source # | |
Defined in GHC.Core.Predicate | |
| Outputable SpecialPred Source # | |
Defined in GHC.Core.Predicate Methods ppr :: SpecialPred -> SDoc Source # | |
specialPredTyCon :: SpecialPred -> TyCon Source #
Obtain the TyCon associated with a special predicate.
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].