jhe*_*dus 5 haskell functional-programming scala reactive-programming rx-java
通过查看RxScala的Scaladoc,我不清楚如何将信号,事件和行为的概念从FRP映射到RxScala.
我还参加了Coursera Reactive课程,但没有解释FRP(由Conal Elliott描述)和RxScala 之间的联系.我模糊的感觉是RxScala中的Observables对应于FRP中的行为/信号,但我不太确定.
有人可以解释如何将Conal的FRP(信号,信号变换器,事件,行为)的概念映射到RxScala中定义的概念/类(Future/Observable/Scheduler/Subject)吗?
Conal 的 Signal 相当于 wiki 的 Behaviour,它们是 Time -> a,尽管 Behaviour 有一个新类型的包装器。Event 只是一个由 Maybe 组成的 Signal。
RxScala 的调度程序似乎是 FRP 实现/管道,与程序员用于构建 FRP 应用程序(或没有 GUI)的接口没有直接关系。我敢打赌,很多 Haskell FRP 都利用了非严格性来“安排”未来的事件,但这对 JVM 的性能不利(特别是),因此,调度程序特征用于此目的。
RxScala 的 Observable 特征是信号的通用接口,并且将直接由原始/基本信号实现,即这些信号不是由其他信号组成的。Observable 对象既充当工厂又充当组合器库,提供了将各种值提升到 FRP 框架的方法以及组合现有 Observable 实例的一些方法。
RxScala 的主题特征适用于用户定义的派生信号,即那些依赖于其他可观察量的信号。要依赖 RxScala 中的 Observable,您必须实现 Observer。主题仅在 Observer 和 Observable 的组合之上添加了两个方法——转换为 Java Rx 框架的函数。
由 Observable 对象的组合器产生的派生信号可以实现Subject,但仅保证实现Obervable。似乎主题是专门用于当您有一种独特/自定义/不寻常的方式将传入通知“连接”到传出通知时,特别是如果它是有状态的。
HTH。这是我第一次不仅仅是浏览 RxScala 文档,所以我可能错过了一些东西。