Compiling a binary that uses quicklisp

Pascal Bourguignon pjb at informatimago.com
Fri Feb 10 20:00:02 UTC 2023


Le 10/02/2023 à 19:50, Brandon Hale a écrit :
>> Don't be confused by the various implementations of helloword in that 
>> project.  Look at the Makefile, only the lisp files are used when 
>> compiling with ecl. 
> One thing I am confused about with this are all of the #-(and) in 
> generate.lisp. I know the #+ecl means only run this in ecl, but what do 
> the #-(and)'s do?

It's a way to comment out a form.

#+ and #- read a boolean feature expression, and then it reads a s-expr 
and either ignore it or return it, depending on the value of the boolean 
feature expression.

feature expression are either symbols (read in the keyword package or 
qualified symbols), that are then tested for membership in the 
*features* list; or AND, OR or NOT feature expressions.  In the case of 
AND and OR, if no subexpressions are present, then they evaluate to the 
neutral element, ie, for AND, true, and for OR nil.

So #-(and) means read the following expression only if true is false. 
Which is obviously false, so the following expression is ignored.

An equivalent form would be #+(or), which would mean to read the 
following expression only of nil is true. Which is false too.

Some people could use #+nil ignored  but the problem with #+nil, is that 
:NIL could be in *features*, and there was once upon a time a lisp 
implementation named New Lisp Implementation and abbreviated as NIL...

-- 
__Pascal Bourguignon__




More information about the ecl-devel mailing list