绑定到自由变量的变量仍然是自由变量吗?

Are variables bounded to free variables still free variables?

提问人:bobaloogie 提问时间:10/30/2021 更新时间:10/30/2021 访问量:67

问:

我正在研究教科书中关于变量是自由的还是有约束力的一些问题。我特别不确定这两个。

首先,我想确保我理解自由与有界的概念。我相当确定这个 x 是以下自由变量:

variable x is free in expression "x"

我相信这是真的,但我只是想确定一下。

然而,这两个问题我不太确定。

(/ (+ 1 x) (let x 2 (+ x x))),
(let x y (/ (+ 1 x) (let x 2 (+ x x))))

对于顶部表达式,第一个子表达式中的 x 是未绑定的(对吗?),但第二个子表达式中的 x 绑定到 2,那么这是否意味着整个表达式的 x 是未绑定的?

对于底部表达式,x 绑定到 y,但 y 是一个自由变量 (?)。那么 x 是自由的,因为 y 是自由的,还是因为 x 仍然绑定到 y 而绑定的?

变量 函数编程 自由 边界变量

评论


答:

0赞 Bergi 10/30/2021 #1

对于 ,第一个子表达式中的 是未绑定的,但在第二个子表达式中是绑定的 ,那么这是否意味着 就整个表达式而言是未绑定的?(/ (+ 1 x) (let x 2 (+ x x)))xx2x

是的。尽管我只对具体的变量表达式使用术语“is bound”或“is free”,而不是名称。正如你所看到的,“”指的是什么,这是模棱两可的。x

我会说“整个表达式有一个自由变量 x”,这是您在尝试计算表达式时通常关心的。

对于 ,绑定到 ,但是一个自由变量。所以是自由的,因为是自由的,还是被束缚的,因为仍然被束缚?(let x y (/ (+ 1 x) (let x 2 (+ x x))))xyyxyxy

是绑定的(并且可以替换)。 是免费的。xy