EtaExpansion
============

Eta expansion is a simple syntactic change used to work around the
<:ValueRestriction:> in <:StandardML:Standard ML>.

The eta expansion of an expression `e` is the expression
`fn z => e z`, where `z` does not occur in `e`.  This only
makes sense if `e` denotes a function, i.e. is of arrow type.  Eta
expansion delays the evaluation of `e` until the function is
applied, and will re-evaluate `e` each time the function is
applied.

The name "eta expansion" comes from the eta-conversion rule of the
<:LambdaCalculus:lambda calculus>.  Expansion refers to the
directionality of the equivalence being used, namely taking `e` to
`fn z => e z` rather than `fn z => e z` to `e` (eta
contraction).
