ALGOL 60 (source code)

= ALGOL 60
{c}

<ALGOL 60> is a block-structured <programming language> specified through a formal report, with nested declarations, procedures, typed variables and structured statements for numerical algorithms. An identifier's meaning depends on its enclosing blocks, making <lexical scope> explicit. The revised report also uses a precise grammar to distinguish syntactic structure from the typography of a particular printed program.<Revised Report on the Algorithmic Language ALGOL 60 edited by Peter Naur>[blocks, declarations and procedure statements]{ref}

Its parameter mechanisms include <call-by-value> and <call-by-name>. The latter behaves through systematic replacement, with renaming to avoid accidental identifier capture, rather than simply copying one already evaluated value. A procedure that refers to a name parameter more than once can therefore evaluate its actual expression more than once. This matters when the expression depends on changing variables or has effects; the two calling conventions are not interchangeable.