RxScala中FRP的事件和行为的相应概念是什么?

时间:2014-03-25 02:31:15

标签: scala haskell functional-programming reactive-programming rx-java

通过查看RxScala的Scaladoc,我不清楚如何将SignalEvent and Behavior的概念从FRP映射到RxScala。

我也参加了Coursera Reactive course,但没有解释FRP(由Conal Elliott所述)和RxScala之间的联系。我模糊的感觉是RxScala中的Observables对应于FRP中的行为/信号,但我不太确定。

有人可以解释如何将Conal的FRP(Signal,信号转换器,事件,行为)的概念映射到RxScala中定义的概念/类(Future / Observable / Scheduler / Subject)吗?

1 个答案:

答案 0 :(得分:3)

Conal的信号相当于维基的行为,它们是时间 - >虽然Behavior有一个newtype包装器。事件只是一个由Maybe组成的信号。

RxScala的Scheduler似乎是与程序员用于构建FRP应用程序(GUI或否)的接口没有直接关系的FRP实现/管道。我打赌很多Haskell FRP利用非严格性来“安排”未来事件,但这对JVM(特别是)的性能并不友好,因此,调度程序特性就是用于此。

RxScala的Observable特性是信号的通用接口,可直接由基元/基本信号实现,即那些不是由其他信号组成的。 Observable对象充当Factory的一部分,有点作为组合器库,提供了向FRP框架提升各种值的方法,以及组合现有Observable实例的一些方法。

RxScala的主题特征是用户定义的派生信号,即依赖于其他Observable的信号。要依赖于RxScala中的Observable,您必须实现Observer。 Subject只在Observer和Observable的组合之上添加了两个方法 - 转换为Java Rx框架的函数。

Observable对象的组合器生成的派生信号可以实现Subject,但只能保证实现Obervable。似乎主题是专门用于当你有一个独特/自定义/不寻常的方式将传入通知“连接”到传出通知时,特别是如果它是有状态的。

HTH。这是我第一次扫描RxScala文档,所以我可能错过了一些东西。