2013-06-20 29 views
5

si afferma nella sezione "Le variabili globali e le costanti" del Google Common Lisp Style Guide che:variabili lessicali globali "falso" in Common Lisp

"Common Lisp non hai le variabili lessicali globali, in modo da una convenzione di denominazione viene utilizzato per garantire che i globals, che sono vincolati dinamicamente, non hanno mai nomi che si sovrappongono a variabili locali

È possibile simulare variabili lessicali globali con una variabile globale con un nome diverso e un DEFINE-SYMBOL-MACRO. Non si dovrebbe usare questo trucco, a meno che non si pubblichi prima una biblioteca che lo allontana ".

Può qualcuno, per favore, aiutarmi a capire il significato di quest'ultima frase.

risposta

7

L'ultima frase,

Si consiglia di non utilizzare questo trucco, se prima non pubblicare una libreria che astrae via.

significa che se si esegue un'operazione che simula le variabili lessicali globali, l'implementazione di tale simulazione non dovrebbe essere evidente per l'utente. Ad esempio, è possibile che simuli un lessico globale utilizzando uno schema utilizzando define-symbol-macro, ma se lo si fa, dovrebbe essere trasparente per l'utente. Vedere l'articolo GLOBALS — Global Variables Done Right di Ron Garret per un esempio di "una biblioteca che lo astrae".