Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
type CleanDemand = JointDmd StrDmd UseDmd #
mkProdDmd :: [Demand] -> CleanDemand #
mkOnceUsedDmd :: CleanDemand -> Demand #
mkManyUsedDmd :: CleanDemand -> Demand #
mkHeadStrict :: CleanDemand -> CleanDemand #
toCleanDmd :: Demand -> Type -> (DmdShell, CleanDemand) #
lazyApply1Dmd :: Demand #
lazyApply2Dmd :: Demand #
catchArgDmd :: Demand #
cleanUseDmd_maybe :: Demand -> Maybe UseDmd #
strictenDmd :: Demand -> CleanDemand #
bothCleanDmd :: CleanDemand -> CleanDemand -> CleanDemand #
addCaseBndrDmd :: Demand -> [Demand] -> [Demand] #
dmdTypeDepth :: DmdType -> Arity #
lubDmdType :: DmdType -> DmdType -> DmdType #
bothDmdType :: DmdType -> BothDmdArg -> DmdType #
nopDmdType :: DmdType #
botDmdType :: DmdType #
removeDmdTyArgs :: DmdType -> DmdType #
type BothDmdArg = (DmdEnv, Termination ()) #
mkBothDmdArg :: DmdEnv -> BothDmdArg #
toBothDmdArg :: DmdType -> BothDmdArg #
emptyDmdEnv :: VarEnv Demand #
findIdDemand :: DmdType -> Var -> Demand #
cprProdRes :: [DmdType] -> DmdResult #
vanillaCprProdRes :: Arity -> DmdResult #
appIsBottom :: StrictSig -> Int -> Bool #
isBottomingSig :: StrictSig -> Bool #
pprIfaceStrictSig :: StrictSig -> SDoc #
returnsCPR_maybe :: DmdResult -> Maybe ConTag #
mkStrictSig :: DmdType -> StrictSig #
mkClosedStrictSig :: [Demand] -> DmdResult -> StrictSig #
cprProdSig :: Arity -> StrictSig #
splitStrictSig :: StrictSig -> ([Demand], DmdResult) #
increaseStrictSigArity :: Int -> StrictSig -> StrictSig #
seqDemandList :: [Demand] -> () #
seqDmdType :: DmdType -> () #
seqStrictSig :: StrictSig -> () #
cleanEvalProdDmd :: Arity -> CleanDemand #
isStrictDmd :: Demand -> Bool #
splitDmdTy :: DmdType -> (Demand, DmdType) #
deferAfterIO :: DmdType -> DmdType #
postProcessUnsat :: DmdShell -> DmdType -> DmdType #
postProcessDmdType :: DmdShell -> DmdType -> BothDmdArg #
splitProdDmd_maybe :: Demand -> Maybe [Demand] #
peelCallDmd :: CleanDemand -> (CleanDemand, DmdShell) #
mkCallDmd :: CleanDemand -> CleanDemand #
dmdTransformSig :: StrictSig -> CleanDemand -> DmdType #
dmdTransformDataConSig :: Arity -> StrictSig -> CleanDemand -> DmdType #
dmdTransformDictSelSig :: StrictSig -> CleanDemand -> DmdType #
argOneShots :: OneShotInfo -> Demand -> [OneShotInfo] #
argsOneShots :: StrictSig -> Arity -> [[OneShotInfo]] #
trimToType :: Demand -> TypeShape -> Demand #
isUsedOnce :: Demand -> Bool #
killUsageDemand :: DynFlags -> Demand -> Demand #
killUsageSig :: DynFlags -> StrictSig -> StrictSig #
zapUsageDemand :: Demand -> Demand #
strictifyDictDmd :: Type -> Demand -> Demand #