2013-06-20 50 views
5

它是在一節「全局變量和常量的」 Google Common Lisp Style Guide是的指出:「假」全球詞彙Common Lisp中的變量

「的Common Lisp沒有全局詞法變量,這樣的命名約定來保證那些被動態綁定的全局變量從來沒有與局部變量重疊的名稱

僞造全局詞法變量可能帶有一個不同名稱的全局變量和一個DEFINE-SYMBOL-MACRO你不應該使用這個技巧,除非你第一次發佈一個將它抽象出來的圖書館。「

請有人能幫我理解最後一句話的意思。

回答

7

最後一句,

你不應該使用這一招,除非你先發布抽象它拿走庫。

意味着如果你做了一些模擬全局詞彙變量的事情,那麼該模擬的實現對用戶來說應該是不明顯的。例如,你可能使用define-symbol-macro來模擬模擬使用某種方案的全局詞彙,但如果你這樣做,它應該對用戶透明。請參閱Ron Garret的GLOBALS — Global Variables Done Right,以「將其抽象出來的圖書館」爲例。