2013-06-20 3 views
5

Это указано в разделе «Глобальные переменные и константы» из Google Common Lisp Style Guide, что:«Поддельные» глобальные лексические переменные в Common Lisp

«Common Lisp не имеет глобальные лексические переменные, так именовании используется для обеспечения что глобальные переменные, динамически связанные друг с другом, никогда не имеют имен, которые перекрываются с локальными переменными.

Можно подделать глобальные лексические переменные с другой именованной глобальной переменной и DEFINE-SYMBOL-MACRO. Вы не должны использовать этот трюк, если только вы не публикуете библиотека, которая абстрагирует ее ».

Может кто-нибудь, пожалуйста, поможет мне понять смысл этого последнего предложения.

ответ

7

Последнее предложение,

Вы не должны использовать этот трюк, если вы первый не опубликуете библиотеку, которая абстрагирует его.

означает, что если вы делаете что-то, что имитирует глобальные лексические переменные, то реализация этого моделирования не должна быть очевидна для пользователя. Например, вы можете имитировать глобальную лексику, используя некоторую схему, используя define-symbol-macro, но если вы это сделаете, она должна быть прозрачной для пользователя. См. Статью Рона Гаррета на примере «библиотеки, которая ее абстрагирует».