gpt4 book ai didi

functional-programming - 闭包在函数式编程中的地位

转载 作者:行者123 更新时间:2023-12-03 09:13:04 25 4
gpt4 key购买 nike

我看过 Robert C Martin 的演讲“函数式编程;什么?为什么?何时?” https://www.youtube.com/watch?v=7Zlp9rKHGD4

本次演讲的主要信息是状态在函数式编程中是 Not Acceptable 。马丁更进一步,声称分配是“邪恶的”。

所以...记住这个演讲,我的问题是,函数式编程中的闭包位置在哪里?

当函数代码中没有状态或变量时,创建和使用这种闭包(不包含任何状态、任何变量的闭包)的主要原因是什么?关闭机制有用吗?

如果没有状态或变量(也许只有不可变 ID),就不需要引用当前的词法范围(没有什么可以改变的)?

在这种方法中,使用类似 Java 的 lambda 机制就足够了,其中没有到当前词法范围的链接(这就是变量必须是最终变量的原因)。

在某些来源中,闭包是函数式语言的必备元素。

最佳答案

可以封闭的词法作用域不需要可变才能有用。以柯里化(Currying)函数为例:

add = \a -> \b -> a+b
add1 = add(1)
add3 = add(3)
[add1(0), add1(2), add3(2), add3(5)] // [1, 2, 5, 8]

这里,内部 lba 关闭于 a 的值(或变量 a,由于不变性,这不会产生任何影响)。

对于函数式编程来说,闭包并不是最终必需的,但局部变量也不是。尽管如此,它们都是非常好的主意。闭包允许对函数式编程最(?)重要的任务进行非常简单的表示:从抽象代码动态创建具有专门行为的新函数。

关于functional-programming - 闭包在函数式编程中的地位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40089429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com