2017-06-14 89 views

回答

2

方案避免了泄漏到規範中的實現,並且提到'標識符'而不是將實現的符號綁定到值 - 參見R7RS的§2.1。在方案中,'標識符'只是一個名字。

標識符名稱被視爲識別變量,除非它標識了一個宏(語法),或者它在上下文中要求將其視爲標識符號,例如通過引用。特別是,R7RS的§2.1指出:「當標識符顯示爲文字或文字(見4.1.2節)時,它被用來表示符號(參見6.5節)」。您可以測試一個標識符是否標識符號?程序。

狡詐方案並事實上由實習符號執行標識符和可以查詢一個符號是否綁定使用定義?:

(defined? 'num) 

=> #F

(define num 1)(defined? 'num) 

=> #T

這是一個狡猾的執行問題,而不是便攜式方案。

編輯:請注意定義?只適用於用define定義的頂級變量。它不適用於let和cognate。

相關問題