在Emacs Lisp (boundp 'symbol)
如果t
绑定某个值,则返回symbol
,否则返回nil
。在Guile计划中是否有相同的程序?
答案 0 :(得分:4)
Scheme避免将实现泄漏到规范中并且说出“标识符”而不是将内部符号绑定到值 - 参见R7RS的§2.1。在方案中,'标识符'只是一个名称。
标识符名称被视为标识变量,除非它标识宏(语法)或它在上下文中,要求将其视为标识符号,例如通过引用。特别是,R7RS的第2.1节规定“当标识符显示为文字或文字内(参见第4.1.2节)时,它用于表示符号(参见第6.5节)”。您可以测试标识符是否使用符号标识符号?过程
Guile方案确实通过实际符号实现标识符,您可以使用已定义的方式查询符号是否绑定?:
(defined? 'num)
=> #F
(define num 1)(defined? 'num)
=> #T
这是一个诡计的实施问题,而不是便携式方案。
编辑:注意定义了吗?仅适用于使用define定义的顶级变量。它不适用于let和同源。