module Reactive.Threepenny.Monads where

import Control.Monad.Trans.RWS.Lazy
import Reactive.Threepenny.Types

{-----------------------------------------------------------------------------
    EvalP - evaluate pulses
------------------------------------------------------------------------------}
runEvalP :: Values -> EvalP a -> IO (a, Values)
runEvalP :: forall a. Values -> EvalP a -> IO (a, Values)
runEvalP Values
pulses EvalP a
m = do
    (a
a, Values
s, ()
_) <- forall r w s (m :: * -> *) a.
RWST r w s m a -> r -> s -> m (a, s, w)
runRWST EvalP a
m () Values
pulses
    forall (m :: * -> *) a. Monad m => a -> m a
return (a
a, Values
s)