Anybody know what #+ and #- operators means in .sbclrc? I couldn’t find it in the manual.
I see #- in .sbclrc after I installed quicklisp:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
(user-homedir-pathname))))
(when (probe-file quicklisp-init)
(load quicklisp-init)))
I also see #+ in the SBCL User Manual, but I couldn’t find explanation of their functionality. Looks like something related for loading individual module.
Are they only for SBCL implementation or part of Common lisp?
That’s a general facility of Common Lisp, not only SBCL.
There is a variable
cl:*features*which lists symbols for ‘features’ which should be present in the Lisp system currently. Typical features are: endian, implementation, subsystems, processor, extensions, Lisp dialect and more.In a Lisp file the expression
#+quicklisp(foo)means: read and execute(foo)only if the featurequicklispis present in the list of features*features*.In a Lisp file the expression
#-quicklisp(foo)means: read and execute(foo)only if the featurequicklispis NOT present in the list of features*features*.This facility is often used to hide or show implementation specific code to some other Common Lisp implementation.
See the documentation:
A typical extension is the feature-case reader macro.