Reaffirmed 2008. The form and meaning of programs written in the Scheme programming language, in particular, their syntax, the semantic rules for interpreting them, and the representation of data to be input or output by them, are specified. The fundamental ideas of the language and the notational conventions used for describing and writing programs in the language are presented. The syntax and semantics of expressions, programs, and definitions are specified. Scheme's built-in procedures, which include all of the language's data manipulation and input/output primitives, are described, and a formal syntax for Scheme written in extended Backus-Naur form is provided. Formal denotational semantics for Scheme and some issues in the implementation of Scheme's arithmetic are covered in the appendixes.