Common Lisp中的"假"全局词法变量

Pau*_*omé 5 lisp global-variables common-lisp lexical-scope

" Google Common Lisp样式指南 "的"全局变量和常量"部分中说明:

"Common Lisp没有全局词法变量,因此使用命名约定来确保动态绑定的全局变量从不具有与局部变量重叠的名称.

可以使用不同命名的全局变量和DEFINE-SYMBOL-MACRO伪造全局词法变量.你不应该使用这个技巧,除非你首先发布一个抽象它的库."

请有人帮助我理解最后一句话的含义.

Jos*_*lor 7

最后一句话,

你不应该使用这个技巧,除非你首先发布一个抽象它的库.

意味着如果你做了模拟全局词汇变量的事情,那么用户就不会明白该模拟的实现.例如,您可以使用某些方案模拟全局词汇define-symbol-macro,但如果这样做,它应该对用户透明.请参阅Ron Garret的GLOBALS - Global Variables Done,以获取"将其抽象出来的图书馆"的示例.