2013-06-20 1 views
5

Il est indiqué dans la section « Les variables globales et constantes » du Google Common Lisp Style Guide que:« Faux » variables lexicales globales en Common Lisp

« Common Lisp ne dispose pas de variables lexicales globales, donc une convention de nommage est utilisé pour assurer que globals, qui sont liés de façon dynamique, jamais ont des noms qui se chevauchent avec des variables locales.

Il est possible de simuler des variables lexicales globales avec une variable globale nommée différemment et DEFINE-SYMBOL-MACRO. vous ne devriez pas utiliser cette astuce, à moins que vous publiez une une bibliothèque qui l'extrait. "

Quelqu'un peut-il, s'il vous plaît, m'aider à comprendre le sens de cette dernière phrase.

Répondre

7

La dernière phrase,

Vous ne devriez pas utiliser cette astuce, à moins que vous publiez d'abord une bibliothèque qu'il fait abstraction.

signifie que si vous faites quelque chose qui simule des variables lexicales globales, alors l'implémentation de cette simulation ne devrait pas être apparente à l'utilisateur. Par exemple, vous pouvez simuler un lexique global en utilisant un schéma utilisant define-symbol-macro, mais si vous le faites, il devrait être transparent pour l'utilisateur. Voir GLOBALS — Global Variables Done Right de Ron Garret pour un exemple de "une bibliothèque qui l'abstraite."