Closed EvilTosha closed 11 years ago
Привет.
Всё хорошо, но только одна просьба. Необходимо также добавить макрос with-user-function или лучше with-user-functions, что бы можно было писать:
(with-user-functions (("myFun1" #'my-fun1) ("myFun2" #'my-fun2))
..)
Смысл в том, что бы не модифицировать глобально user-functions и possible-function (во избежание потенциальных конфликтов).
Немного не ясна цель макроса. В каких ситуациях он будет использоваться?
Что будет, если две разных библиотеки добавят пользовательские функции с одинаковыми именами? Какая-то из них будет неправильно работать. Защитить себя от возможных конфликтов можно так:
(let ((closure-template::*user-functions* closure-template::*user-functions*)
(closure-template.parser::*possible-functions* closure-template.parser::*possible-functions*))
(closure-template:add-user-function "myFun1" #'my-fun1)
(closure-template:add-user-function "myFun2" #'my-fun2)
...)
Но это слишком многословно, а символы closure-template::user-functions и closure-template.parser::possible-functions не экспортированы и являются внутренней деталью реализации.
Добавил макрос. Но так как переменные динамические, замыкание с функциями сделать не получится =( Еще не уверен насчет докстринга, правильный ли формат?
Добавлена возможность добавлять свои функции (для вызова напрямую из шаблона). Соответствующая функция экспортирована.