Я ожидаю, что следующий будет печатать "()" 10 раз в секунду. Но он висит через секунду. Зачем?FRP (реактивный): Как использовать filterE?
adaptE $ fmap print $ filterE (const True) $ atTimes [0.1, 0.2 ..]
Я обнаружил, что это связано с liftM используется в 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
Я попытался переописать filterE
используя fmap
и, кажется, работает. Зачем? Как используется стандарт filterE
?
Я обнаружил, что переопределяю множество стандартных функций, предоставляемых пакетом reactive
(например, , integrate
). Означает ли это, что пакет неисправен, или я использую его неправильно?
Спасибо!
[fmap, <$>, лифтA, лифтM одинаковы] (http://stackoverflow.com/questions/1634911/can-liftm-differ-from-lifta/1635208#1635208). – kennytm
Им ДОЛЖНЫ быть одинаковыми. Но «adaptE. fmap print $ atTimes [0,1, 0,2 .. 10] 'работает 10 секунд и' adaptE. liftM print $ atTimes [0,1, 0,2 .. 10] 'никогда не возвращается. Зачем? – Yuras
Реактивный довольно багги – luqui