Terminology

Some terminology will be useful. It is perhaps best to read this section only briefly, and to refer back to it when necessary.

The term expression will be used to refer to a textual entity. The term value will be used to refer to a run-time value denoted by an expression. To understand the difference between an expression and a value consider the expressions 1+2 and 3. The expressions are textually different but they denote the same value, namely the integer 3.

A function expression is any expression of the form function ... end function or of the form func< ... | ... >. The former type of function expression will be said to be in the statement form, the latter in the expression form. A function value is the run-time value denoted by a function expression. As with integers, two function expressions can be textually different while denoting the same (i.e., extensionally equal) function value. To clearly distinguish function values from function expressions, the notation FUNC( ... : ... ) will be used to describe function values.

The formal arguments of a function in the statement form are the identifiers that appear between the brackets just after the function keyword, while for a function in the expression form they are the identifiers that appear before the |. The arguments to a function are the expressions between the brackets when a function is applied.

The body of a function in the statement form is the statements after the formal arguments. The body of a function in the expression form is the expression after the | symbol.

An identifier is said to occur inside a function expression when it is occurs textually anywhere in the body of a function.

V2.28, 13 July 2023