packages feed

reactive-banana-0.9.0.0: doc/examples/Bug.hs

{-# 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 ()