我想学习Haskell中的FRP,但是很难决定要使用哪个库。 许多似乎是失败的尝试,有些似乎已经复活(例如Yampa上的最近活动)。
从我所读的内容来看,似乎有两种“类型”的FRP:推拉式FRP(像在Reactive-banana和Reflex中)和箭头化FRP(像在Yampa中)。在Fran和FrTime时代似乎也曾经有一些“经典FRP”,但我没有注意到这方面的任何最新活动。
这两种(或三种)FRP方法真的是根本不同的方法吗?
其中一种方法是否已过时,而另一种则是“未来的东西”?
还是它们必须并行发展,以解决不同的目的?
我是否提到了每个类别中最重要的库,还是需要考虑其他选项(如Sodium,Netwire等)?
我终于观看了J. Abrahamson在评论中推荐的Evan Czaplicki的演讲。它非常有趣,并帮助我澄清了一些问题。我强烈建议任何对此问题感兴趣的人观看它。
reactive-banana
明确是拉取式的而不是推送-拉取式的。reactive
是推送-拉取式的。Yampa
和netwire
是箭化的。有一些 FRP 允许“累积值”,但不允许“切换”,还有一些 FRP 允许“切换”但不允许“累积值”。这两者都是“简单” FRP。箭化的 FRP 允许切换和累积,并使用箭头来控制这些特性组合的危险性。类似于reactive-banana
、sodium
和elerea
的单子化 FRP 使用其他谨慎的机制来确保切换和累积之间不会产生太多交互。 - J. Abrahamson