Safe Haskell | None |
---|---|
Language | Haskell2010 |
Arity and eta expansion
- manifestArity :: CoreExpr -> Arity
- joinRhsArity :: CoreExpr -> JoinArity
- exprArity :: CoreExpr -> Arity
- typeArity :: Type -> [OneShotInfo]
- exprEtaExpandArity :: DynFlags -> CoreExpr -> Arity
- findRhsArity :: DynFlags -> Id -> CoreExpr -> Arity -> Arity
- type CheapFun = CoreExpr -> Maybe Type -> Bool
- etaExpand :: Arity -> CoreExpr -> CoreExpr
- etaExpandToJoinPoint :: JoinArity -> CoreExpr -> ([CoreBndr], CoreExpr)
- etaExpandToJoinPointRule :: JoinArity -> CoreRule -> CoreRule
- exprBotStrictness_maybe :: CoreExpr -> Maybe (Arity, StrictSig)
Documentation
manifestArity :: CoreExpr -> Arity #
manifestArity sees how many leading value lambdas there are, after looking through casts
joinRhsArity :: CoreExpr -> JoinArity #
exprArity :: CoreExpr -> Arity #
An approximate, fast, version of exprEtaExpandArity
typeArity :: Type -> [OneShotInfo] #
exprEtaExpandArity :: DynFlags -> CoreExpr -> Arity #
findRhsArity :: DynFlags -> Id -> CoreExpr -> Arity -> Arity #
The Arity returned is the number of value args the expression can be applied to without doing much work
etaExpand n e
returns an expression with
the same meaning as e
, but with arity n
.
Given:
e' = etaExpand n e
We should have that:
ty = exprType e = exprType e'
etaExpandToJoinPoint :: JoinArity -> CoreExpr -> ([CoreBndr], CoreExpr) #
Split an expression into the given number of binders and a body, eta-expanding if necessary. Counts value *and* type binders.
etaExpandToJoinPointRule :: JoinArity -> CoreRule -> CoreRule #