Use of Read-Time Conditionals (ANSI and GNU Common Lisp Document)

Previous: Use of Implementation-Defined Language Features, Up: Conforming Programs

#### 1.5.2.2 Use of Read-Time Conditionals

Use of `#+` and `#-` does not automatically disqualify a program from being conforming. A program which uses `#+` and `#-` is considered conforming if there is no set of features in which the program would not be conforming. Of course, conforming programs are not necessarily working programs. The following program is conforming:

    (defun foo ()
      #+ACME (acme:initialize-something)
      (print 'hello-there))

However, this program might or might not work, depending on whether the presence of the feature `ACME` really implies that a function named `acme:initialize-something` is present in the environment. In effect, using `#+` or `#-` in a conforming program means that the variable *features*

becomes just one more piece of input data to that program. Like any other data coming into a program, the programmer is responsible for assuring that the program does not make unwarranted assumptions on the basis of input data.