EtaExpansion - MLton Standard ML Compiler (SML Compiler)

MLton MLTONWIKIVERSION | EtaExpansion |
Home Index

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).

Last edited on 2006-03-28 00:57:50 by StephenWeeks.