Благодаря предыдущим ответам на общий lisp: как макрос может определять другие методы / макросы с программно сгенерированными именами? У меня есть макрос, который определяет вспомогательные функции (на самом деле у меня есть макрос, мой новый любимый lisp -newbie-молот). Но внутри этого макроса есть кое-что, что решает, должны ли вспомогательные функции принимать определенный аргумент. Итак, у меня есть оператор if с почти одинаковыми ветвями - я размещаю одну ветвь var в лямбда-списке сгенерированных функций. Вниз по другой ветке, я опускаю, вар. (Я пишу DSL для непрограммистов, поэтому я не хочу, чтобы они видели такие вещи, как & не обязательно)
Есть ли способ избежать дублирования кода? Если я установлю var на "", то "" появится в лямбда-списке моих сгенерированных defuns. Если я установлю var в nil, то вместо этого появится NIL.
Есть ли значение, которое я могу использовать так, чтобы var вообще ничего не вычислял, теряя сознание? (И философского интереса, не должно ли быть один?)