Eta expansion is a simple syntactic change used to work around the ValueRestriction in 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
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).