RACStream代表monad是什么意思?

时间:2014-03-09 16:42:32

标签: ios functional-programming reactive-cocoa

来自文档RACStream代表“Monad”? 有人可以解释这在RACStream的上下文中具体意味着什么。 我查看了维基上的功能意义,但我很难看到它如何使Reactive-Cocoa受益以及为什么选择这种模式?

1 个答案:

答案 0 :(得分:7)

在Objective-C的上下文中,RACStream是monad的事实基本上意味着它遵循一种模式。在这种情况下,RACStream使用-bind:方法,这是更常用的-flattenMap:的“原始”版本,这些方法基本上是RACStream a单子。

(有关其使用的更多信息,请查看documentation for -flattenMap:。)

给定一个块B,它取一个值并返回一个RACStream(即一个将值映射到流的块),并给出一个流A,调用[A flattenMap:B]将产生一个“聚合”流,其中包含块B返回的集合流集中的所有值(对A中的每个值调用)。 (编辑:这个狭隘的解释没有描述结果流上的值的时间,也没有描述错误传播。如果您对这些问题有疑问,我很乐意回答它们。)

可以在ReactiveCocoa的Basic Operators文档中找到几个示例。

至于好处,我认为溪流是monad的事实大多只对那些有monad经验的人有益。另一方面,文档中几乎没有提到monad,更重要的是,ReactiveCocoa根本不需要monad的知识,因此不熟悉Monad没有任何缺点。