以何种方式执行reptiva-banana的执行顺序无法保证?

Kri*_*itz 6 haskell reactive-banana

execute函数的文档Reactive.Banana.Frameworks说"无法保证执行操作的顺序".

我不确定这里的排序是什么意思.由于事件只会同时触发一个动作,因此这里没有太多的命令可以保证,因此我可以想象的最可能的情况是:

a :: MomentIO (Event t)
a = ...

b :: MomentIO (Event t)
b = ...

makeEvent :: MomentIO (Event (MomentIO (Event t))
makeEvent = fromAddHandler $ ... -- Some AddHandler that first fires a
                                 -- and later fires b

network :: MomentIO ()
network = do
  ...
  newEvents <- makeEvent
  ts <- execute newEvents >>= switchE
  ...
Run Code Online (Sandbox Code Playgroud)

非保证我能想象这里是的执行顺序ab切换,从而b最先被执行.如果我们假设a并且b都修改某些小部件的行为(使用liftIO)然后注册它们相应的事件处理程序(取消注册先前注册的那个),则切换执行顺序a并且b将是致命的,因为它将使小部件处于它的状态不会解雇它应该开火的处理者.因为execute如果我的方案是正确的,我没有看到哪些用例仍然有用,我认为文档实际上意味着其他的东西.

有人可以澄清一下文档在这里要说的内容吗?