有没有办法检查Scheme中是否存在变量?即使做(如果是变量)或(null?variable)这样的事情也会导致错误,因为未定义变量.是否有一些函数可以返回变量是否存在?
此功能内置于 Mit-Scheme 中。
#lang scheme
(define x "hello world")
(environment-bound? (nearest-repl/environment) 'x)
(environment-bound? (nearest-repl/environment) 'not-x)
Run Code Online (Sandbox Code Playgroud)
小智 3
根据 R6RS 的说法,调用未绑定变量是一种语法违规。
http://www.r6rs.org/final/html/r6rs/r6rs-ZH-12.html#node_sec_9.1
但是,根据您的实现,应该有一种方法(至少理论上)来查询环境并检查变量是否是成员。不过,您需要为此做一些进一步的阅读。
http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-ZH-17.html#node_idx_1268