extensions:optimize-interface declaration is identical in
syntax to the
optimize declaration, but it specifies the policy
used during compilation of code the compiler automatically generates
to check the number and type of arguments supplied to a function. It
is useful to specify this policy separately, since even thoroughly
debugged functions are vulnerable to being passed the wrong arguments.
optimize-interface declaration can specify that arguments
should be checked even when the general
optimize policy is
Note that this argument checking is the checking of user-supplied
arguments to any functions defined within the scope of the
not the checking of arguments to Common Lisp
primitives that appear in those definitions.
The idea behind this declaration is that it allows the definition of
functions that appear fully safe to other callers, but that do no
internal error checking. Of course, it is possible that arguments may
be invalid in ways other than having incorrect type. Functions
compiled unsafely must still protect themselves against things like
user-supplied array indices that are out of bounds and improper lists.
See also the
:context-declarations option to