Common Lisp the Language
2nd Edition
Next: Classes
Up: Programmer Interface Concepts
Previous: Programmer Interface Concepts

The
terminology used in this chapter to describe erroneous
situations differs from the terminology used in the first edition.
The new terminology involves situations;
a situation is the evaluation of an expression in some
specific context. For example
a situation might be the invocation of
a function on arguments that fail to satisfy some specified
constraints.
In the specification of the Common Lisp Object System
the behavior of programs in all situations
is described
and the options available to the implementor are defined. No
implementation is allowed to extend the syntax or semantics of the Object System except
as explicitly defined in the Object System specification. In particular
no
implementation is allowed to extend the syntax of the Object System in such a way that
ambiguity between the specified syntax of the Object System and those extensions is
possible.
- ``When situation S occurs
an error is signaled.''
-
This terminology has the following meaning:
- If this situation occurs
an error will be signaled in
the interpreter and in code compiled under all compiler safety
optimization levels.
- Valid programs may rely on the fact that an error will be
signaled in the interpreter and in code compiled under all compiler
safety optimization levels.
- Every implementation is required to detect such an error
in the interpreter and in code compiled under all compiler safety
optimization levels.
- ``When situation S occurs
an error should be signaled.''
-
This terminology has the following meaning:
- If this situation occurs
an error will be signaled at
least in the interpreter and in code compiled under the safest
compiler safety optimization level.
- Valid programs may not rely on the fact that an error will be
signaled.
- Every implementation is required to detect such an error
at least in the interpreter and in code compiled under the safest
compiler safety optimization level.
- When an error is not signaled
the results are undefined (see
below).
- ``When situation S occurs
the results are undefined.''
-
This terminology has the following meaning:
- If this situation occurs
the results are unpredictable. The
results may range from harmless to fatal.
- Implementations are allowed to detect this situation and
signal an error
but no implementation is required to detect the
situation.
- No valid program may depend on the effects of this
situation
and all valid programs are required to treat the effects
of this situation as unpredictable.
- ``When situation S occurs
the results are unspecified.''
-
This terminology has the following meaning:
- The effects of this situation are not specified in
the Object System
but the effects are harmless.
- Implementations are allowed to specify the effects of
this situation.
- No portable program can depend on the effects of this
situation
and all portable programs are required to treat the situation
as unpredictable but harmless.
- ``The Common Lisp Object System may be extended to cover situation S.''
-
The meaning of this terminology is that an implementation is free to treat
situation S in one of three ways:
- When situation S occurs
an error is signaled at least
in the interpreter and in code compiled under the safest compiler
safety optimization level.
- When situation S occurs
the results are undefined.
- When situation S occurs
the results are defined and
specified.
In addition
this terminology has the following meaning:
- No portable program can depend on the effects of this
situation
and all portable programs are required to treat the situation
as undefined.
- ``Implementations are free to extend the syntax S.''
-
This terminology has the following meaning:
- Implementations are allowed to define unambiguous extensions
to syntax S.
- No portable program can depend on this extension
and
all portable programs are required to treat the syntax
as meaningless.
The Common Lisp Object System specification may disallow certain extensions while allowing others.
Next: Classes
Up: Programmer Interface Concepts
Previous: Programmer Interface Concepts
AI.Repository@cs.cmu.edu