variables - 绑定到自由变量的变量仍然是自由变量吗?
问题描述
我正在看教科书中的一些问题,这些问题是关于变量是自由的还是有约束的。我不确定这两个。
首先,我想确保我理解自由与绑定的概念。我相当确定这个 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 有界,所以它是有界的?
解决方案
因为
(/ (+ 1 x) (let x 2 (+ x x)))
,x
第一个子表达式中的 是未绑定的,但x
在第二个子表达式中是绑定的2
,那么这是否意味着x
关于整个表达式的 in 是未绑定的?
是的。尽管我只会对具体的变量表达式使用术语“绑定”或“自由”,而不是名称。如您所见," x
" 所指的含义是模棱两可的。
我会说“整个表达式有一个自由变量x
”,这是您在尝试评估表达式时通常关心的内容。
对于
(let x y (/ (+ 1 x) (let x 2 (+ x x))))
,x
绑定到y
, 但是y
是一个自由变量。那么x
是免费的,因为y
它是免费的,还是因为x
仍然有界而受到约束y
?
是绑定的x
(并且可以被替换)。y
免费。
推荐阅读
- node.js - Socket.io v4 基本实现
- sql - 如何根据 SQL 中的分隔符对列进行拆分
- c# - 如何添加 Bearertoken 来发布/获取 restsharp 自动化测试
- botframework - MS Teams bot 框架/botkit 是否能够禁用打字指示器?
- html - 指向 PDF 的链接在移动设备上不起作用
- python-3.x - 为什么 MLFLow 在 Docker 环境中使用 MLFlow 项目时无法记录指标、工件?
- android - 在没有firebase的情况下处理flutter中的登录和身份验证
- autodesk - 数字孪生 Autodesk Forge
- reactjs - 刷新浏览器后 Flask 会话 cookie 消失
- azure - 如何使用 Resource Graph Explorer 列出 Azure 上存储帐户的所有角色分配?