闭包是高阶函数带来的功能,可是用闭包不是破坏了fp的无状态性了吗?这个问题大家是怎么理解的?
个人觉得在支持匿名函数的非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也是闭包
原帖由 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
原帖由 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?
原帖由 Strange 于 2009-4-1 16:41 发表 闭包是高阶函数带来的功能,可是用闭包不是破坏了fp的无状态性了吗?这个问题大家是怎么理解的?
一个闭包在自己的环境里绑定了若干变量。只要不赋值,仍然是无状态的。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(4)
个人觉得在支持匿名函数的非fp语言中闭包要更好玩些,"oo is poor man's closure"嘛。
个人把闭包理解成一种scope机制,在某函数体中定义的函数可以访问“父函数”中的变量,例如在haskell中where子句:
f x y = g 1
where g a = x % y + a
currying实际上就是一组lambda的语法糖,![](https://www.wenjiangs.com/wp-content/uploads/chinaunix/202206/icon_smile.gif)
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
一个闭包在自己的环境里绑定了若干变量。只要不赋值,仍然是无状态的。