标签: bound-variable

什么是自由和绑定变量?

我已经编程了很长时间(实际上太长了),但我真的很难理解"自由变量"和"绑定变量"这两个术语.

我在网上找到的大多数"解释"都是从谈论Lambda演算和形式逻辑或Axiomatic Semantics等主题开始的.这让我想要伸手去拿左轮手枪.

有人可以解释这两个术语,理想情况是从实现的角度来解释.它们是否可以存在于编译语言中,以及它们转换为哪些低级代码?

free-variable bound-variable

20
推荐指数
2
解决办法
1万
查看次数

是否可以用 Haskell 或任何其他语言编写一个或多个仅表示封闭项的数据结构?

使用 De Bruijn 表示法,可以将 lambda 项定义为:

data BTerm = BVar Int | BLam BTerm | BApp BTerm BTerm

或者使用通常的符号, data Term = Var String | Lam String Term | App Term Term

这两种数据类型允许构造封闭项和包含自由变量的项。

是否可以定义仅允许构造封闭项的数据类型。即只有诸如:\xx、\x 之类的术语。xx, \x.\y. xy, \x.\y. y, \x.\y.\zz(xy)

haskell expression lambda-calculus term bound-variable

8
推荐指数
2
解决办法
310
查看次数