[英]FRP (reactive): How to use filterE?
我希望下一個會在一秒內打印“()”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
我嘗試使用fmap
重新實現filterE
,它似乎工作。 為什么? 標准filterE
如何設計使用?
我發現自己重新實現了reactive
包提供的許多標准功能(例如diffE
, integrate
)。 這是否意味着包裝有錯誤或我以錯誤的方式使用它?
謝謝!
根據我的經驗,反應是錯誤的,特別是關於Event
的Monad
實例(monad join
操作稍微嚴格,我們不確定為什么)。 盡可能避免這種情況。 Reactive是一個實驗,代表了更多運行時支持可能實現的功能。 請參閱Yampa,了解更穩定,可靠且行程良好的FRP庫,即使它的表現力稍差。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.