我要去吗?scheme中的谓词

我要去吗?scheme中的谓词,scheme,read-eval-print-loop,Scheme,Read Eval Print Loop,有没有人建议我如何检查变量x是否有界 例如,我想区分未绑定变量和符号,但这里的symbol?谓词不好,因为(symbol?x)给了我一个错误 我只处理未绑定的变量 我给你举个例子: (pattern-rule `(car ,(?'expr)) (lambda (expr) `,(car (fold expr)))) 这段代码是作为解析器一部分的文件夹过程的一部分 返回的对(fold'(car(cons'1'2))的评估是'1 在(fold'(car x))上返回的求值应该是(car

有没有人建议我如何检查变量x是否有界

例如,我想区分未绑定变量和符号,但这里的
symbol?
谓词不好,因为
(symbol?x)
给了我一个错误

我只处理未绑定的变量

我给你举个例子:

(pattern-rule
 `(car ,(?'expr))
    (lambda (expr) `,(car (fold expr))))
这段代码是作为解析器一部分的文件夹过程的一部分

返回的对
(fold'(car(cons'1'2))
的评估是
'1

(fold'(car x))
上返回的求值应该是
(car x)
(我的意思是字符串
(car x)


但我不知道怎么做这部分

我知道您正在编写自己的解析器?如果是这样,您需要有环境的显式表示。每次遇到绑定构造,例如
lambda
let
,都会将绑定变量添加到环境中。当您需要确定一个变量是否绑定时,您可以在环境中查找它——如果它存在,那么它是绑定的,如果不存在,那么它是未绑定的