Tôi hy vọng tiếp theo sẽ in "()" 10 lần trong một giây. Nhưng nó bị treo sau một giây. Tại sao?FRP (phản ứng): Làm thế nào để sử dụng filterE?
adaptE $ fmap print $ filterE (const True) $ atTimes [0.1, 0.2 ..]
tôi thấy rằng nó có liên quan đến liftM sử dụng trong filterE:
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
Tôi cố gắng để reimplement filterE
sử dụng fmap
và có vẻ như để làm việc. Tại sao? Tiêu chuẩn filterE
được thiết kế để sử dụng như thế nào?
Tôi thấy mình đang thực hiện rất nhiều chức năng chuẩn được cung cấp bởi gói reactive
(ví dụ: diffE
, integrate
). Nó có nghĩa là gói bị lỗi hoặc tôi sử dụng nó theo cách sai?
Cảm ơn!
[fmap, <$>, liftA, liftM đều giống nhau] (http://stackoverflow.com/questions/1634911/can-liftm-differ-from-lifta/1635208#1635208). – kennytm
Họ NÊN giống nhau. Nhưng 'thích ứng. fmap in $ atTimes [0.1, 0.2 .. 10] 'hoạt động 10 giây và' thích ứng. liftM in $ atTimes [0.1, 0.2 .. 10] 'không bao giờ trả về. Tại sao? – Yuras
phản ứng là khá lỗi – luqui