2017-06-14 94 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。

相关问题