FRP是否有一套“完整”的函数/运算符?

时间:2015-06-15 18:19:41

标签: haskell functional-programming system.reactive reactive-programming rx-java

功能反应式编程是一种以纯函数方式指定副作用程序的方法。

最近我一直在使用rxscala,它是ReactiveX的Java / Scala端口。它基于Observable的概念,可以视为某种类型的值流。

对于这个问题,我想排除处理时间连续变化(信号)的FRP方法。

从旧的Observable构建新的Observable

可以使用大量不同的函数组合这些Observable来创建新的可观察对象。这些类似于可应用于集合的函数。我们知道FoldableTraversableApplicativeMonads之类的内容已经很清楚了。

事实上,可观察物是可折叠的,可穿越的单子,就像普通的收藏品一样。但是这些特征可以通过多种方式实现为可观察对象,因为可观察对象比普通集合拥有更多的信息(每个元素的时间信息)。结果还必须配备定时信息。

两个Monad实现

例如,monadic join(Scala中的flatMap)可以至少以两种不同的,合理的方式实现:

限制

我对所提供的组合函数库非常满意,但我一直遇到无法实现我想要的情况,我不得不回到某种并发编程。

缺少组合子或大脑?

现在我想知道使用现有的组合器构建所需行为是否太愚蠢了。或者是rxscala中可用的组合函数不足以创建所有可以想象的行为?

问题

我要求证明一些基本的组合函数B足以从某些输入可观察量创建“每个可想象的可观察量”。

可能最困难的部分可能是“每个可以想象的观察”的定义。 也许Haskell社区已经产生了这样的东西?

1 个答案:

答案 0 :(得分:3)

结帐this blog postthis video。在那里,Bart de Smet提出了一套最小的操作,可以构建其他所有操作员。我想,出于性能原因,人们可能不应该尝试通过基本操作符来实现每个操作符,但这是一个有趣的练习,可以尝试一些。