簡體   English   中英

FRP(反應):如何使用filterE?

[英]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包提供的許多標准功能(例如diffEintegrate )。 這是否意味着包裝有錯誤或我以錯誤的方式使用它?

謝謝!

根據我的經驗,反應是錯誤的,特別是關於EventMonad實例(monad join操作稍微嚴格,我們不確定為什么)。 盡可能避免這種情況。 Reactive是一個實驗,代表了更多運行時支持可能實現的功能。 請參閱Yampa,了解更穩定,可靠且行程良好的FRP庫,即使它的表現力稍差。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM