在Haskell的反应香蕉中,反应网络的flatMap相当于什么?

时间:2012-04-07 09:59:32

标签: haskell reactive-programming frp reactive-banana

我正在寻找reactive-banana中的函数,该函数将根据另一个事件流或信号的传入值(行为?)选择接下来要发出的事件流。在scala库中,响应式网络可以通过以下方式完成:

 flatMap[U](f: T => EventStream[U]): EventStream[U] 

谢谢!

2 个答案:

答案 0 :(得分:6)

这是动态事件切换。不幸的是,在该公式中,它具有many problems,因此不包括在反应性香蕉中。但是,动态事件切换的变体将是added soon。现在,你将不得不这样做。

特别是,flatMap是一元绑定函数的Scala名称;行为的Monad实例是有问题的,因为它提供了动态事件切换功能,导致我链接的文章中解释的时间泄漏。

答案 1 :(得分:3)

作为ehird答案的附录,我想提一下,通常可以避免动态事件切换,即相关行为/事件在编译时在范围内。只有在动态计算新的行为/事件时才需要动态事件切换,而不是在已经在范围内的行为/事件之间切换时。

特别是,请查看examples page上的TwoCounters.hs示例,看看如何做到这一点。