Oczekuję, że następny wydrukuje "()" 10 razy na sekundę. Ale wisi po chwili. Czemu?FRP (reaktywne): Jak korzystać z filtru?
adaptE $ fmap print $ filterE (const True) $ atTimes [0.1, 0.2 ..]
stwierdziliśmy, że jest to związane liftM stosowanych w 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
Próbowałem reimplement filterE
korzystając fmap
i wydaje się działać. Czemu? Jak zaprojektowano standard filterE
?
Znalazłem się reimplementing wiele standardowych funkcji dostarczonych przez pakiet reactive
(np. diffE
, integrate
). Czy to oznacza, że pakiet jest błędny lub używam go w niewłaściwy sposób?
Dzięki!
[fmap, <$>, liftA, liftM są takie same] (http://stackoverflow.com/questions/1634911/can- liftm-differ-from-lifta/1635208#1635208). – kennytm
Powinny być takie same. Ale 'adaptE. fmap print $ atTimes [0.1, 0.2 .. 10] 'działa 10 sekund i' adaptE. liftM print $ atTimes [0.1, 0.2 .. 10] 'nigdy nie zwraca. Czemu? – Yuras
reaktywny jest dość błędny – luqui