Standard, Storeless Semantics for ALGOL-Style Block Structure and Call-by Name

This paper presents a formulation for the standard semantics of block structure and ALGOL 60 style call-by-name. The main features of this formulation are the use of continuations and streams. Continuations are used in such a way that the semantics can be defined without requiring the idea of an explicit store. Thus the concepts of address or L- and R- values are not used, and simple continuations suffice for describing assignments, iterative control statements, compounds, blocks, and functions using call by value. (Side effects are still allowed via assignments to variables global to functions.) Call-by-name is handled by introducing the idea of multiple continuations. Input-output is treated by using streams. In conjunction with continuations, these allow the formulation of program “pipes” exactly like compound functions.