【问题标题】:isBound? predicate in scheme是绑定吗?方案中的谓词
【发布时间】:2014-11-29 22:28:47
【问题描述】:

有没有人建议我如何检查变量 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)

但我不知道如何做这部分!

【问题讨论】:

    标签: scheme read-eval-print-loop


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      相关资源
      最近更新 更多