ghc-7.6.3: The GHC API

Safe Haskell | None

CoreArity

Description

Arit and eta expansion

Synopsis

- manifestArity :: CoreExpr -> Arity
- exprArity :: CoreExpr -> Arity
- exprBotStrictness_maybe :: CoreExpr -> Maybe (Arity, StrictSig)
- exprEtaExpandArity :: DynFlags -> CheapAppFun -> CoreExpr -> Arity
- type CheapFun = CoreExpr -> Maybe Type -> Bool
- etaExpand :: Arity -> CoreExpr -> CoreExpr

# Documentation

manifestArity :: CoreExpr -> Arity

manifestArity sees how many leading value lambdas there are

exprArity :: CoreExpr -> Arity

An approximate, fast, version of `exprEtaExpandArity`

exprBotStrictness_maybe :: CoreExpr -> Maybe (Arity, StrictSig)

exprEtaExpandArity :: DynFlags -> CheapAppFun -> CoreExpr -> Arity

type CheapFun = CoreExpr -> Maybe Type -> Bool

etaExpand

Arguments

:: Arity | Result should have this number of value args
-> CoreExpr | Expression to expand
-> CoreExpr |

`etaExpand n us e ty` returns an expression with the same meaning as `e`, but with arity `n`.

Given:

     e' = etaExpand n us e ty

We should have that:

     ty = exprType e = exprType e'