Editor's introduction to this fascicle

The Revised7Report on the Algorithmic Language Scheme, Large Edition, is released in fascicles, which are incrementalreleases of the full standard.

This is the Procedural Fascicle(fascicle 2 of 8) containing the description of the basic syntax and procedures used for procedural programming in Scheme.It defines

  • the syntax of creating procedures (lambda),

  • the definition form for REPLs and for libraries(define),

  • forms for block-structured variable binding (let),

  • destructive assignment (set!),

  • conditional forms (if, and,or),

  • loops (named let, do),

  • and the equivalence of procedure objects.

Changes to the R7RS

The major features of this fascicle:

  • definewith no left-hand side, like in the R6RS.

  • Higher order procedure definitions like in SRFI 219

  • define-alias to make one identifier refer to another.

  • letrec-values and letrec*-values.

  • A rec form similar to the one defined in the RRRS to define anonymous recursive functions.

  • The ability to mix definitions and expressions in bodies.

  • A condthat handles multiple values as in SRFI 61.

  • The clauses for cond, case, along with the formswhen and unless, are now bodies that allow for definitions.

  • It is now syntactically valid for cond and caseto have no clauses.