All of these constructs are described below, except for resends which are described later in section 2.8 and declarations other than variable declarations which are described in other sections.
Declaration Blocks A declaration block is an unbroken sequence of declarations.
Because the name of an object is visible throughout its declaration block, objects can inherit from objects defined later within the declaration block and methods can be specialized on objects defined later in the declaration block. Similarly, methods declared within a single declaration block can be mutually recursive and there is no need for forward declarations or the like. In environments where the top-level declaration block comprising the program is spread across multiple files, as in the UW Cecil implementation, the ability to attach methods to objects defined later in some other file is important. Otherwise, the variable binding is constant. Formal parameters are treated as constant variable bindings and so are not assignable.