ghc-8.2.2: The GHC API

Safe HaskellNone
LanguageHaskell2010

CoreArity

Description

Arity and eta expansion

Synopsis

Documentation

manifestArity :: CoreExpr -> Arity #

manifestArity sees how many leading value lambdas there are, after looking through casts

exprArity :: CoreExpr -> Arity #

An approximate, fast, version of exprEtaExpandArity

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 #

Arguments

:: Arity

Result should have this number of value args

-> CoreExpr

Expression to expand

-> CoreExpr 

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.