带有自由变量的函数和闭包之间有什么关系?[已结束]

What is the relation between a function with free variables and a closure? [closed]

提问人:Ben Weaver 提问时间:1/19/2022 最后编辑:Ben Weaver 更新时间:1/21/2022 访问量:241

问:


想改进这个问题吗?更新问题,以便可以通过编辑这篇文章来用事实和引文来回答。

去年关闭。

函数中的自由变量是闭包中的事物“闭合”吗?

Scala Haskell 闭包 lambda-calculus

评论

6赞 Mateusz Kubuszok 1/19/2022
如果你使用CS的组合器定义,你应该使用CS的闭包定义 - 在CS中,“闭包”不是一个函数,它是一个创建函数的环境,它将一些值绑定到函数的变量。因此,除非您将环境定义为“遗漏”某些值,否则我会说闭包中唯一没有设置值的变量是参数。因此,我不会称它为“对立面”,更像是正交事物。
3赞 Tim 1/19/2022
不同意这一点。闭包 = 功能 + 环境(或“控制部分”和“环境部分”)。因此,组合器是闭包的子集,其中环境为空。
2赞 Mateusz Kubuszok 1/19/2022
@Tim这取决于您如何解释“Joel Moses 将 Landin 归功于引入术语 closure 来指代其开放绑定(自由变量)已被词法环境关闭(或绑定在)词法环境中的 lambda 表达式,从而导致闭合表达式或闭包”。我的理解是,你拿一个带有自由变量的函数,然后使用环境将值绑定到这些变量中的每一个,使它们成为有界变量。因此,闭包将创建一个具有自由变量的函数外的组合器。
2赞 chepner 1/20/2022
自由变量就是:自由。它们没有任何已知的绑定。闭包包含一个或多个变量,这些变量绑定在非局部但仍已知的作用域中。
3赞 Paul Johnson 1/20/2022
简短的回答:“不”。

答: 暂无答案