1.2 Scope of the Manual

This manual is intended to describe the syntax, semantics, and implementation of PSL. While we have attempted to make it comprehensive, it is not intended for use as a primer. Some prior exposure to LISP will prove to be very helpful.

1.2.1 Typographic Conventions within the Manual

A large portion of this manual is devoted to descriptions of the functions that make up PSL. For each function there is a prototypical header line. Each argument is given a name, followed by the type of argument expected. If more than one type is allowed then the choices will be enclosed within the brackets {, and }. For example, the following header shows a function named vector-fetch which accepts two arguments. The first V, is a vector, the second I, is an integer. The term expr refers to a type of function.

(vector-fetch V:vector I:integer): any expr
The value returned is the i’th element of the vector V.

Within compiled code, some function calls are replaced by a sequence of instructions whose execution is equivalent to a call on the function. Functions of this type will have a note saying open-compiled next to the function type.

Some functions accept an arbitrary number of arguments. The header for these functions shows a single argument enclosed in square brackets, indicating that zero or more occurrences of that argument are allowed.

(and [U:form]): extra-boolean fexpr
And is a function which accepts zero or more arguments each of which may be any form.

In some cases, LISP code is given in the function documentation as the function’s definition. This code is given to clarify the semantics of the function, it is not a copy of the actual PSL definition.