#### 1.3.3 Entry format

Chapters Expressions and Standard procedures are organized into entries. Each entry describes one language feature or a group of related features, where a feature is either a syntactic construct or a built-in procedure. An entry begins with one or more header lines of the form

— category: template

for required, primitive features, or

— qualifier category: template

where qualifier is either “library” or “optional” as defined in section Primitive; library; and optional features.

If category is “syntax”, the entry describes an expression type, and the template gives the syntax of the expression type. Components of expressions are designated by syntactic variables, which are written using angle brackets, for example, <expression>, <variable>. Syntactic variables should be understood to denote segments of program text; for example, <expression> stands for any string of characters which is a syntactically valid expression. The notation

     <thing1> ...

indicates zero or more occurrences of a <thing>, and

     <thing1> <thing2> ...

indicates one or more occurrences of a <thing>.

If category is “procedure”, then the entry describes a procedure, and the header line gives a template for a call to the procedure. Argument names in the template are italicized. Thus the header line

— procedure: (vector-ref vector k)

indicates that the built-in procedure `vector-ref` takes two arguments, a vector vector and an exact non-negative integer k (see below). The header lines

— procedure: (make-vector k)
— procedure: (make-vector k fill)

indicate that the `make-vector` procedure must be defined to take either one or two arguments.

It is an error for an operation to be presented with an argument that it is not specified to handle. For succinctness, we follow the convention that if an argument name is also the name of a type listed in section Disjointness of types, then that argument must be of the named type. For example, the header line for `vector-ref` given above dictates that the first argument to `vector-ref` must be a vector. The following naming conventions also imply type restrictions:

> obj
>   any object
> list, list1, ... listj, ...
>   list (see section see Pairs and lists)
> z, z1, ... zj, ...
>   complex number
> x, x1, ... xj, ...
>   real number
> y, y1, ... yj, ...
>   real number
> q, q1, ... qj, ...
>   rational number
> n, n1, ... nj, ...
>   integer
> k, k1, ... kj, ...
>   exact non-negative integer