Safe Haskell | Safe-Infered |
---|
- type PrType = RRType Predicate
- data TyConP = TyConP {
- freeTyVarsTy :: ![RTyVar]
- freePredTy :: ![PVar RSort]
- data DataConP = DataConP {}
- dataConTy :: HashMap RTyVar (RType Class RTyCon RTyVar Predicate) -> Type -> RType Class RTyCon RTyVar Predicate
- dataConPSpecType :: DataConP -> SpecType
- makeTyConInfo :: [(TyCon, TyConP)] -> HashMap TyCon RTyCon
- unify :: Maybe PrType -> SpecType -> SpecType
- replacePreds :: String -> SpecType -> [(RPVar, Ref RReft SpecType)] -> SpecType
- exprType :: CoreExpr -> Type
- predType :: Type
- replacePredsWithRefs :: (UsedPVar, (Symbol, [((), Symbol, Expr)]) -> Refa) -> UReft FReft -> UReft FReft
- pVartoRConc :: PVar t -> (Symbol, [(a, b, Expr)]) -> Refa
- toPredType :: Reftable r => PVar (RType Class RTyCon RTyVar a) -> RRType r
- substParg :: Functor f => (Symbol, Expr) -> f Predicate -> f Predicate
Documentation
TyConP | |
|
dataConTy :: HashMap RTyVar (RType Class RTyCon RTyVar Predicate) -> Type -> RType Class RTyCon RTyVar PredicateSource
replacePreds :: String -> SpecType -> [(RPVar, Ref RReft SpecType)] -> SpecTypeSource
This is the main function used to substitute an (abstract) predicate
with a concrete Ref, of a compound (RPoly
) type. The substitution is
invoked to obtain the SpecType
resulting at predicate application
sites in Constraint
.
The range of the PVar
substitutions are fresh or true RefType
.
That is, there are no further PVar
in the target.