我目前正在使用reactive-banana和reactive-banana-wx软件包重新设计一个遗留的wxHaskell.但是,为了避免动态网络构建(我遇到了MVar上的线程块),我现在通过预构建一组固定的wxHaskell小部件来模仿这一点,我根据需要设置了可见性.可见性由sink函数a设置Behavior.但是,wxHaskell要求在通过适当修改所有这些小部件之后,需要sink随后更改保存这些小部件的面板的布局.这意味着sink-ing实际上应该是网络的一部分,因此它是一个可以触发并等待布局更改的事件.就目前而言,一个sink将您带出事件网络,在sink操作完成后无法触发事件.我确实试图适应sink这样的事情:
sink' :: Frameworks t =>
w -> [Prop' t w] -> Moment t (Event t ())
sink' widget props = do
es <- mapM sink1 props
return $ unions es
where
sink1 (attr :== b) = do
x <- initial b
liftIOLater $ set widget [attr := x]
e <- changes b
return $ (\x -> unsafePerformIO $ set widget [attr := x]) <$> e …Run Code Online (Sandbox Code Playgroud)