-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A basic `reflex` host for backend work -- -- A basic reflex host for backend work. @package reflex-basic-host @version 0.1 -- | BasicGuest provides instances that most reflex -- programs need: -- -- -- -- For some simple usage examples, see the examples directory module Reflex.Host.Basic data BasicGuest t (m :: * -> *) a type BasicGuestConstraints t (m :: * -> *) = (MonadReflexHost t m, MonadHold t m, MonadSample t m, Ref m ~ Ref IO, MonadRef (HostFrame t), Ref (HostFrame t) ~ Ref IO, MonadIO (HostFrame t), PrimMonad (HostFrame t), MonadIO m, MonadFix m) -- | Run a BasicGuest -- -- The program will exit when the Event returned by the -- BasicGuest fires basicHostWithQuit :: (forall t m. BasicGuestConstraints t m => BasicGuest t m (a, Event t ())) -> IO a -- | Run a BasicGuest without a quit Event basicHostForever :: (forall t m. BasicGuestConstraints t m => BasicGuest t m a) -> IO a -- | Augment a BasicGuest with an action that is repeatedly run -- until the provided event fires -- -- Example - providing a 'tick' Event to a network -- --
--   myNetwork :: (Reflex t, MonadHold t m, MonadFix m) => Event t () -> m (Dynamic t Int)
--   myNetwork eTick = count eTick
--   
--   myGuest :: BasicGuestConstraints t m => BasicGuest t m ((), Event t ())
--   myGuest = do
--     (eTick, sendTick) <- newTriggerEvent
--     dCount <- myNetwork eTick
--     let
--       eCountUpdated = updated dCount
--       eQuit = () <$ ffilter (==5) eCountUpdated
--     repeatUntilQuit eQuit (threadDelay 1000000 *> sendTick ())
--     performEvent_ $ liftIO . print <$> eCountUpdated
--     pure ((), eQuit)
--   
--   main :: IO ()
--   main = basicHostWithQuit myGuest
--   
repeatUntilQuit :: BasicGuestConstraints t m => IO a -> Event t () -> BasicGuest t m () instance Reflex.Host.Class.ReflexHost t => Control.Monad.Fix.MonadFix (Reflex.Host.Basic.BasicGuest t m) instance Reflex.Host.Class.ReflexHost t => GHC.Base.Monad (Reflex.Host.Basic.BasicGuest t m) instance Reflex.Host.Class.ReflexHost t => GHC.Base.Applicative (Reflex.Host.Basic.BasicGuest t m) instance Reflex.Host.Class.ReflexHost t => GHC.Base.Functor (Reflex.Host.Basic.BasicGuest t m) instance (Control.Monad.IO.Class.MonadIO m, Reflex.Host.Class.ReflexHost t, Control.Monad.IO.Class.MonadIO (Reflex.Host.Class.HostFrame t)) => Control.Monad.IO.Class.MonadIO (Reflex.Host.Basic.BasicGuest t m) instance Reflex.Host.Class.ReflexHost t => Reflex.Class.MonadSample t (Reflex.Host.Basic.BasicGuest t m) instance (Reflex.Host.Class.ReflexHost t, Reflex.Class.MonadHold t m) => Reflex.Class.MonadHold t (Reflex.Host.Basic.BasicGuest t m) instance (Reflex.Class.Reflex t, Reflex.Host.Class.ReflexHost t) => Reflex.PostBuild.Class.PostBuild t (Reflex.Host.Basic.BasicGuest t m) instance (Reflex.Class.Reflex t, Reflex.Host.Class.ReflexHost t, Control.Monad.Ref.MonadRef (Reflex.Host.Class.HostFrame t), Control.Monad.Ref.Ref (Reflex.Host.Class.HostFrame t) Data.Type.Equality.~ Control.Monad.Ref.Ref GHC.Types.IO) => Reflex.TriggerEvent.Class.TriggerEvent t (Reflex.Host.Basic.BasicGuest t m) instance (Reflex.Class.Reflex t, Reflex.Host.Class.ReflexHost t, Control.Monad.Ref.Ref m Data.Type.Equality.~ Control.Monad.Ref.Ref GHC.Types.IO, Control.Monad.Ref.MonadRef (Reflex.Host.Class.HostFrame t), Control.Monad.Ref.Ref (Reflex.Host.Class.HostFrame t) Data.Type.Equality.~ Control.Monad.Ref.Ref GHC.Types.IO, Control.Monad.IO.Class.MonadIO (Reflex.Host.Class.HostFrame t), Control.Monad.Primitive.PrimMonad (Reflex.Host.Class.HostFrame t), Control.Monad.IO.Class.MonadIO m) => Reflex.PerformEvent.Class.PerformEvent t (Reflex.Host.Basic.BasicGuest t m) instance (Reflex.Class.Reflex t, Reflex.Host.Class.ReflexHost t, Control.Monad.Ref.Ref m Data.Type.Equality.~ Control.Monad.Ref.Ref GHC.Types.IO, Reflex.Class.MonadHold t m, Control.Monad.Primitive.PrimMonad (Reflex.Host.Class.HostFrame t)) => Reflex.Adjustable.Class.Adjustable t (Reflex.Host.Basic.BasicGuest t m) instance Reflex.Host.Class.ReflexHost t => Reflex.NotReady.Class.NotReady t (Reflex.Host.Basic.BasicGuest t m)