closure

1. In a reduction system, a closure is a data structure that holds an expression and an environment of variable bindings in which that expression is to be evaluated. The variables may be local or global. Closures are used to represent unevaluated expressions when implementing functional programming languages with lazy evaluation. In a real implementation, both expression and environment are represented by pointers.

A suspension is a closure which includes a flag to say whether or not it has been evaluated. The term "thunk" has come to be synonymous with "closure" but originated outside functional programming.

2. In domain theory, given a partially ordered set, D and a subset, X of D, the upward closure of X in D is the union over all x in X of the sets of all d in D such that x <= d. Thus the upward closure of X in D contains the elements of X and any greater element of D. A set is "upward closed" if it is the same as its upward closure, i.e. there is no d greater than an element which is not an element. The downward closure is similar but with d <= x and a downward closed set is one for which there is no d less than an element which is not an element.

("<=" is written in LaTeX as \subseteq and the upward closure of X in D is written \uparrow_D X).

(16 Dec 1994)