I've stared at Steele's Common Lisp the Language until I'm blue in the face, and still have this question. If I compile:
(defun x ()
(labels ((y ()))
5))
(princ (x))
(terpri)
this happens:
home:~/clisp/experiments$ clisp -c -q x.lisp
;; Compiling file /u/home/clisp/experiments/x.lisp ...
WARNING in lines 1..3 :
function X-Y is not used.
Misspelled or missing IGNORE declaration?
;; Wrote file /u/home/clisp/experiments/x.fas
0 errors, 1 warning
home:~/clisp/experiments$
Fair enough. So how do I ask the compiler to ignore function y? I tried this:
(defun x ()
(labels (#+ignore(y ()))
5))
(princ (x))
(terpri)
and it worked:
home:~/clisp/experiments$ clisp -c -q y.lisp
;; Compiling file /u/home/clisp/experiments/y.lisp ...
;; Wrote file /u/home/clisp/experiments/y.fas
0 errors, 0 warnings
home:~/clisp/experiments$
but somehow I don't think that's what the warning is suggesting that I do.
What do I do?
GNU CLISP is asking you to
declare
the function to beignore
d.Alternatively (especially if this is the result of a macro expansion where it depends on the user whether
y
is actually used or not),(Wherever you are expected to write
(function y)
, you are free to use the reader abbreviation#'y
instead.)