2009-04-26 92 views

回答

19

闭包,因为这个词往往被使用,只是函数(或代码块,如果你喜欢),你可以像一块数据一样对待并传递给其他函数等(“关闭”位是无论你最终调用它的位置,它的行为就像它最初定义的位置时的行为一样)。 monad(大体上)更像是一个函数可以按顺序链接在一起的上下文,并控制数据如何从一个函数传递到下一个函数。

+1

这可以帮助我,谢谢一堆! – user63657 2009-04-26 12:50:56

5

他们是完全不同的,虽然单子往往会使用关闭捕捉逻辑。

个人而言,我会尝试担心单子之前得到闭包的定义(本质上是一块逻辑也捕捉它的环境,即局部变量等)的固体。他们可以稍后:)

有关于堆栈溢出关闭各种问题 - 最好的人帮你将取决于你的工作是什么平台上。例如,有:

个人,我才刚刚开始“神交”的单子(感谢这本书,我帮助了上)。有一天,我会得到全面写了一篇文章关于他们,当我觉得我理解他们不够好:)

+0

Jon-我喜欢你的答案,这部分非常much-“有一天我会得到全面写关于他们的文章,当我觉得我理解他们不够好:)”保持下去!运气最好! – 2009-06-03 04:17:23

1

“闭包”是一个对象,包含1)一个函数,2)它的自由变量的值在构造它的地方。

A“单子”是一类能够以一定的方式,即,通过使用相关联的绑定返回高阶函数运算符组成,以产生其他函数的函数。

0

我觉得单子有点比关闭更复杂,因为闭包是记得的定义和单子点东西的代码只是块的“扭曲”的常用函数合成操作的构造。