Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data CprResult
- topCpr :: CprResult
- botCpr :: CprResult
- conCpr :: ConTag -> CprResult
- asConCpr :: CprResult -> Maybe ConTag
- data CprType = CprType {}
- topCprType :: CprType
- botCprType :: CprType
- conCprType :: ConTag -> CprType
- lubCprType :: CprType -> CprType -> CprType
- applyCprTy :: CprType -> CprType
- abstractCprTy :: CprType -> CprType
- ensureCprTyArity :: Arity -> CprType -> CprType
- trimCprTy :: CprType -> CprType
- newtype CprSig = CprSig {}
- topCprSig :: CprSig
- mkCprSigForArity :: Arity -> CprType -> CprSig
- mkCprSig :: Arity -> CprResult -> CprSig
- seqCprSig :: CprSig -> ()
Documentation
The constructed product result lattice.
NoCPR | ConCPR ConTag | BotCPR
The abstract domain \(A_t\) from the original 'CPR for Haskell' paper.
topCprType :: CprType Source #
botCprType :: CprType Source #
conCprType :: ConTag -> CprType Source #
applyCprTy :: CprType -> CprType Source #
abstractCprTy :: CprType -> CprType Source #
The arity of the wrapped CprType
is the arity at which it is safe
to unleash. See Note [Understanding DmdType and StrictSig] in Demand