Chinaunix

标题: 问关于函数式编程闭包的问题 [打印本页]

作者: Strange    时间: 2009-04-01 16:41
标题: 问关于函数式编程闭包的问题
闭包是高阶函数带来的功能,可是用闭包不是破坏了fp的无状态性了吗?这个问题大家是怎么理解的?
作者: win_hate    时间: 2009-04-01 17:38
一个闭包在自己的环境里绑定了若干变量。只要不赋值,仍然是无状态的。
作者: lixuzhang    时间: 2009-05-21 20:48
原帖由 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
作者: PeterGhostWolf    时间: 2009-05-21 22:56
原帖由 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?
作者: Fleurer    时间: 2009-06-02 18:04
个人觉得在支持匿名函数的非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
也是闭包




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2