История изменений
Исправление monk, (текущая версия) :
Ее нельзя без гигиены избежать
Можно, но сложно.
Например так:
(defmacro aif (test then &optional else)
(let ((it (gensym)))
`(let ((,it ,test))
(if ,it ,(maptree (lambda (x) (if (eq x 'it) it x))
then)
,else))))
Для совсем правильного aif надо вместо maptree какой-то map, который обходит всё, кроме голов списков.
Исходная версия monk, :
Ее нельзя без гигиены избежать
Можно, но сложно.
Например так:
(defmacro aif (test then &optional else)
(let ((it (gensym)))
`(let ((,it test))
(if ,it ,(maptree (lambda (x) (if (eq x 'it) it x))
then)
,else))))
Для совсем правильного aif надо вместо maptree какой-то map, который обходит всё, кроме голов списков.