{-# LANGUAGE RecursiveDo #-} module RBBug where import Reactive.Banana import Reactive.Banana.Frameworks data State = State { stateCounter :: Int } test :: Int -> IO () test n = do compile $ network n return () network :: Frameworks t => Int -> Moment t () network 1 = mdo let state = pure (State 0) -- switchB (pure (State 0)) never positivityChanges <- changes isPositive reactimate' (fmap (fmap print) positivityChanges) let isPositive = fmap ((>= 0) . stateCounter) state return () network 2 = mdo let b = stepper (State 0) e e <- execute $ (\a -> FrameworksMoment $ return a) <$> (b <@ never) return ()