问关于函数式编程闭包的问题

发布于 2022-08-17 06:29:41 字数 46 浏览 18 评论 4

闭包是高阶函数带来的功能,可是用闭包不是破坏了fp的无状态性了吗?这个问题大家是怎么理解的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

无言温柔 2022-08-21 06:53:32

个人觉得在支持匿名函数的非fp语言中闭包要更好玩些,"oo is poor man's closure"嘛。

个人把闭包理解成一种scope机制,在某函数体中定义的函数可以访问“父函数”中的变量,例如在haskell中where子句:
f x y = g 1
           where g a = x % y + a

currying实际上就是一组lambda的语法糖,
f x y = some_expression
就等价于 f = x -> y -> some_expression
也是闭包

薯片软お妹 2022-08-20 16:53:11

原帖由 lixuzhang 于 2009-5-21 20:48 发表

我的理解就是函数参数的部分绑定。

f(x, y) = x+y;
但现在我已经知道y=3,代入就变成:
f(x, y) = f(x, 3) = x + 3

即得到新函数 g(x) = x+3

Currying?

秋千易 2022-08-19 16:25:17

原帖由 Strange 于 2009-4-1 16:41 发表
闭包是高阶函数带来的功能,可是用闭包不是破坏了fp的无状态性了吗?这个问题大家是怎么理解的?

我的理解就是函数参数的部分绑定。

f(x, y) = x+y;
但现在我已经知道y=3,代入就变成:
f(x, y) = f(x, 3) = x + 3

即得到新函数 g(x) = x+3

无边思念无边月 2022-08-17 19:55:18

一个闭包在自己的环境里绑定了若干变量。只要不赋值,仍然是无状态的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文