Seb*_*raf 6 haskell reactive-banana
我正在寻找像flatten :: Event [a] -> Event a(如果你想要的那样交换)这样的东西[],Foldable f => f它会为一个列表a中的每一个生成一个单独的事件Event,就像split在旧版本中一样sodium.
我怀疑这在某种程度上是可能的switchE,但后来我需要一个类型的函数[a] -> Event a.
我可以自己制作newEvent,但内置的功能是reactive-banana什么?
编辑:
实际上,我不太确定我能否实现这一点newEvent.
flatten :: Foldable f => f a -> Banana.MomentIO (Banana.Event a)
flatten xs = do
(event, fire) <- Banana.newEvent
liftIO $ forkIO $ mapM_ fire xs
return event
Run Code Online (Sandbox Code Playgroud)
会fire阻塞,直到有订阅者,或者如果没有订阅者,它会立即返回吗?
编辑2:
纵观实施newAddHandler我上面的实施将无法正常工作,因为所有的事件都可能解雇之前的任何处理函数可以注册.
这似乎是不可能的.根据Heinrich Apfelmus的博客中的说明,Event不支持同时发生.这是一个相对较新的变化; 该帖子的日期是去年8月,v1.0于10月发布.几年前我最初学习Reactive Banana的情况肯定不是这样.
但Event [a]似乎是一种合理的方式来代表一组巧合事件.你为什么要把它弄平?