我希望下一个将在一秒钟内打印“()” 10次。但一秒钟后挂起。为什么?

adaptE $ fmap print $ filterE (const True) $ atTimes [0.1, 0.2 ..]

我发现它与filterE中使用的liftM有关:
filterE :: (Ord t, Bounded t) => (a -> Bool) -> EventG t a -> EventG t a
filterE p m = justE (liftM f m)
 where
   f a | p a        = Just a
       | otherwise  = Nothing

我尝试使用filterE重新实现fmap,它似乎可以正常工作。为什么?
如何设计标准filterE

我发现自己重新实现了reactive包提供的许多标准功能(例如diffEintegrate)。这是否意味着该程序包存在问题或我使用错误的方式?

谢谢!

最佳答案

以我的经验,响应式(Reactive)是 buggy ,尤其是关于MonadEvent实例(monad join操作有点太严格了,我们不确定为什么)。尽可能避免这种情况。响应式是一个实验,它代表了更多运行时支持所可能实现的目标。请参阅Yampa,以获取更稳定,可靠和有效的FRP库,即使它的表达能力较低。

关于haskell - FRP( react 性): How to use filterE?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4113207/

10-11 17:45