Значит постановка вопроса: есть некая переменная - t или nil.
Надо написать макрос, который будет выполнять при соблюдении некоего условия и значении переменной = nil одно действие и ставить переменную в t, при соблюдени условия и значении переменной = t другое действие, т.е. к примеру:
(if (and trigger cond) (foo))
(if (and (not trigger) cond) (progn (bar) (setq trigger t)))
и так много раз (к примеру, на входе будут списоки (cond act1 act2)
Вот макрос:
http://pastebin.com/Gv62aDN4
Там есть код и пример использования. Проблема в том, что при вызове из самого верху макрос работает, а при вызове из функции пишет ошибку. Вывод такой
A
B
*** - EVAL: variable NAME has no value
Хотя это аргумент функции как-никак. Я в лиспе новичок (точнее - у меня нет практики), так что просьба за быдлокод не пинать.
Если это важно - всё записано в файл и вызывается так - clisp test.lisp
Форум —
Development





