FRP是否有一套"完整"的功能/操作员?

zig*_*tar 11 haskell functional-programming reactive-programming system.reactive rx-java

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

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

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

用旧的Observable构建新的Observable

可以使用大量不同的函数组合这些Observable来创建新的可观察对象.这些类似于可应用于集合的函数.而这些都已经相当很好理解,因为我们知道Foldable,Traversable,Applicative,Monads等.

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

两个Monad实现

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

限制

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

缺少组合器或大脑?

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

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

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

Dan*_*ber 3

查看此博客文章此视频。在那里,Bart de Smet 提出了一组最小的操作,可以构建现有的所有其他操作。我想,出于性能原因,人们可能不应该尝试通过基本运算符来实现每个运算符,但对于某些运算符来说,尝试这是一项有趣的练习。