Они являются частью Common Lisp READ
er. Идея состоит в том, что они «спрятали» текст, если определенная функция (часто некая реализация CL) является (#+
) или не доступна (#-
).
Это, вероятно, концепция CL как идея C / C ++ «текстовых макросов» - концептуально и прагматично, они очень похожи на нечто вроде
#ifdef __MSVC12__
#ifndef __cplusplus__
... и тому подобное. Они буквально скрывают биты входящего кода cource от READ
er, поэтому они никогда не лексируются - анализируются - интерпретируются - скомпилированы - оцениваются - интернированы - нада. Они просто перестают существовать, если в реализации CL, которой вы работаете, отсутствует функция / является «неправильной» реализацией / независимо от флага.