问关于函数式编程闭包的问题
闭包是高阶函数带来的功能,可是用闭包不是破坏了fp的无状态性了吗?这个问题大家是怎么理解的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
闭包是高阶函数带来的功能,可是用闭包不是破坏了fp的无状态性了吗?这个问题大家是怎么理解的?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
个人觉得在支持匿名函数的非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
也是闭包
Currying?
我的理解就是函数参数的部分绑定。
f(x, y) = x+y;
但现在我已经知道y=3,代入就变成:
f(x, y) = f(x, 3) = x + 3
即得到新函数 g(x) = x+3
一个闭包在自己的环境里绑定了若干变量。只要不赋值,仍然是无状态的。