Translation

powered by

Computing (FOLDOC) dictionary

Weak Head Normal Form

reduction, lambda calculus (WHNF) A lambda expression is

in weak head normal form (WHNF) if it is a head normal form

(HNF) or any lambda abstraction. I.e. the top level is not

a redex.

The term was coined by Simon Peyton Jones to make explicit

the difference between head normal form (HNF) and what

graph reduction systems produce in practice. A lambda

abstraction with a reducible body, e.g.

x . (( y . y+x) 2)

is in WHNF but not HNF. To reduce this expression to HNF

would require reduction of the lambda body:

( y . y+x) 2 --@# 2+x

Reduction to WHNF avoids the name capture problem with its

need for alpha conversion of an inner lambda abstraction and

so is preferred in practical graph reduction systems.

The same principle is often used in strict languages such as

Scheme to provide call-by-name evaluation by wrapping an

expression in a lambda abstraction with no arguments:

D = delay E = () . E