您好我正在尝试理解lambda演算,遗憾的是我对未绑定变量的主题感到困惑。 这是我从我的教授那里得到的关于有效lambda表达式的列表(不知道他为什么不使用像我在互联网上看到的其他地方一样的点btw)
现在我对其中的几个感到困惑。说第五个:Lambda x。(xy) 为什么这是一个有效的表达?我不认为我可以像这样使用这个表达式,因为y是未绑定的:( Lambda x。(xy))5
以下是我尝试的一些练习:
这些答案是否正确?
a)是
b)是
c)是
d)否
e)是
f)是
g)是
这一切都感觉不对,如果不允许未绑定的变量,那将更合乎逻辑。然后答案看起来像这样:
a)是
b)否
c)是
d)否
e)是
F)无
克)否
我认为我接近理解这一点,但我需要在后面进行最后一次推动才能完全理解。无论如何,谢谢你的帮助!
答案 0 :(得分:1)
在表达式中使用未绑定(自由)变量没有任何问题。它们通常被认为是在全球范围内。
与陈述非常相似:
f(x) = x^y
其中,x是绑定的局部变量,y是自由的全局变量。我们没有足够的信息来解释f(x)对于x的给定值,但是在代数上,f(5) = 5^y
。
按照相同的逻辑说(λx.y)(...) = y
是有效的。我们没有y的值,但我们不需要。
没有自由变量你怎么称为lambda? 组合器。这很有趣,因为它是真的。