-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Higher-order Functional Reactive Programming -- @package reflex @version 0.1.0 module Control.Monad.Ref class Monad m => MonadRef m where type family Ref m :: * -> * newRef :: MonadRef m => a -> m (Ref m a) readRef :: MonadRef m => Ref m a -> m a writeRef :: MonadRef m => Ref m a -> a -> m () atomicModifyRef :: MonadRef m => Ref m a -> (a -> (a, b)) -> m b cacheM :: (MonadRef m, MonadRef m', Ref m ~ Ref m') => m' a -> m (m' a, m ()) cacheMWithTry :: (MonadRef m, MonadRef m', Ref m ~ Ref m') => m' a -> m (m' a, m (Maybe a), m ()) -- | Not thread-safe or reentrant memoM :: (MonadRef m, MonadRef m', Ref m ~ Ref m') => m' a -> m (m' a) replaceRef :: MonadRef m => Ref m a -> a -> m a modifyRef :: MonadRef m => Ref m a -> (a -> a) -> m () instance MonadRef m => MonadRef (ReaderT r m) instance (Monoid w, MonadRef m) => MonadRef (WriterT w m) instance MonadRef IO module Data.Functor.Misc data WrapArg :: (* -> *) -> (* -> *) -> * -> * WrapArg :: f a -> WrapArg g f (g a) data Const2 :: * -> * -> * -> * Const2 :: k -> Const2 k v v sequenceDmap :: (Monad m, GCompare f) => DMap (WrapArg m f) -> m (DMap f) combineDMapsWithKey :: GCompare f => (forall a. f a -> These (g a) (h a) -> i a) -> DMap (WrapArg g f) -> DMap (WrapArg h f) -> DMap (WrapArg i f) wrapDMap :: (forall a. a -> f a) -> DMap k -> DMap (WrapArg f k) rewrapDMap :: (forall a. f a -> g a) -> DMap (WrapArg f k) -> DMap (WrapArg g k) unwrapDMap :: (forall a. f a -> a) -> DMap (WrapArg f k) -> DMap k mapToDMap :: Map k v -> DMap (Const2 k v) mapWithFunctorToDMap :: Map k (f v) -> DMap (WrapArg f (Const2 k v)) dmapToMap :: DMap (Const2 k v) -> Map k v instance Typeable Const2 instance Ord k => GCompare (Const2 k v) instance Eq k => GEq (Const2 k v) instance GCompare f => GCompare (WrapArg g f) instance GEq f => GEq (WrapArg g f) module Reflex.Class class (MonadHold t (PushM t), MonadSample t (PullM t), Functor (Event t), Functor (Behavior t)) => Reflex t where data family Behavior t :: * -> * data family Event t :: * -> * type family PushM t :: * -> * type family PullM t :: * -> * never :: Reflex t => Event t a constant :: Reflex t => a -> Behavior t a push :: Reflex t => (a -> PushM t (Maybe b)) -> Event t a -> Event t b pull :: Reflex t => PullM t a -> Behavior t a merge :: (Reflex t, GCompare k) => DMap (WrapArg (Event t) k) -> Event t (DMap k) fan :: (Reflex t, GCompare k) => Event t (DMap k) -> EventSelector t k switch :: Reflex t => Behavior t (Event t a) -> Event t a coincidence :: Reflex t => Event t (Event t a) -> Event t a class Monad m => MonadSample t m | m -> t sample :: MonadSample t m => Behavior t a -> m a class MonadSample t m => MonadHold t m hold :: MonadHold t m => a -> Event t a -> m (Behavior t a) newtype EventSelector t k EventSelector :: (forall a. k a -> Event t a) -> EventSelector t k select :: EventSelector t k -> forall a. k a -> Event t a pushAlways :: Reflex t => (a -> PushM t b) -> Event t a -> Event t b ffor :: Functor f => f a -> (a -> b) -> f b class FunctorMaybe f fmapMaybe :: FunctorMaybe f => (a -> Maybe b) -> f a -> f b fforMaybe :: FunctorMaybe f => f a -> (a -> Maybe b) -> f b ffilter :: FunctorMaybe f => (a -> Bool) -> f a -> f a zipListWithEvent :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> c) -> [a] -> Event t b -> m (Event t c) -- | Replace the occurrence value of the Event with the value of the -- Behavior at the time of the occurrence tag :: Reflex t => Behavior t b -> Event t a -> Event t b attachWithMaybe :: Reflex t => (a -> b -> Maybe c) -> Behavior t a -> Event t b -> Event t c attachWith :: Reflex t => (a -> b -> c) -> Behavior t a -> Event t b -> Event t c attach :: Reflex t => Behavior t a -> Event t b -> Event t (a, b) onceE :: (Reflex t, MonadHold t m, MonadFix m) => Event t a -> m (Event t a) headE :: (Reflex t, MonadHold t m, MonadFix m) => Event t a -> m (Event t a) tailE :: (Reflex t, MonadHold t m, MonadFix m) => Event t a -> m (Event t a) headTailE :: (Reflex t, MonadHold t m, MonadFix m) => Event t a -> m (Event t a, Event t a) splitE :: Reflex t => Event t (a, b) -> (Event t a, Event t b) traceEvent :: (Reflex t, Show a) => String -> Event t a -> Event t a traceEventWith :: Reflex t => (a -> String) -> Event t a -> Event t a data EitherTag l r a LeftTag :: EitherTag l r l RightTag :: EitherTag l r r eitherToDSum :: Either a b -> DSum (EitherTag a b) dsumToEither :: DSum (EitherTag a b) -> Either a b dmapToThese :: DMap (EitherTag a b) -> Maybe (These a b) appendEvents :: (Reflex t, Monoid a) => Event t a -> Event t a -> Event t a sequenceThese :: Monad m => These (m a) (m b) -> m (These a b) mergeWith :: Reflex t => (a -> a -> a) -> [Event t a] -> Event t a leftmost :: Reflex t => [Event t a] -> Event t a mergeList :: Reflex t => [Event t a] -> Event t (NonEmpty a) mergeMap :: (Reflex t, Ord k) => Map k (Event t a) -> Event t (Map k a) fanMap :: (Reflex t, Ord k) => Event t (Map k a) -> EventSelector t (Const2 k a) -- | Switches to the new event whenever it receives one; the new event is -- used immediately, on the same frame that it is switched to switchPromptly :: (Reflex t, MonadHold t m) => Event t a -> Event t (Event t a) -> m (Event t a) gate :: Reflex t => Behavior t Bool -> Event t a -> Event t a instance Reflex t => Align (Event t) instance (Semigroup a, Reflex t) => Monoid (Event t a) instance (Show l, Show r) => ShowTag (EitherTag l r) instance GShow (EitherTag l r) instance GCompare (EitherTag l r) instance GEq (EitherTag l r) instance Reflex t => Functor (Event t) instance Reflex t => FunctorMaybe (Event t) instance Reflex t => Functor (Behavior t) instance MonadHold t m => MonadHold t (ReaderT r m) instance MonadSample t m => MonadSample t (ReaderT r m) module Reflex.Dynamic data Dynamic t a current :: Dynamic t a -> Behavior t a updated :: Dynamic t a -> Event t a constDyn :: Reflex t => a -> Dynamic t a holdDyn :: MonadHold t m => a -> Event t a -> m (Dynamic t a) nubDyn :: (Reflex t, Eq a) => Dynamic t a -> Dynamic t a count :: (Reflex t, MonadHold t m, MonadFix m, Num b) => Event t a -> m (Dynamic t b) toggle :: (Reflex t, MonadHold t m, MonadFix m) => Bool -> Event t a -> m (Dynamic t Bool) -- | Switches to the new event whenever it receives one. Switching occurs -- *before* occurring the inner event. switchPromptlyDyn :: Reflex t => Dynamic t (Event t a) -> Event t a tagDyn :: Reflex t => Dynamic t a -> Event t b -> Event t a attachDyn :: Reflex t => Dynamic t a -> Event t b -> Event t (a, b) attachDynWith :: Reflex t => (a -> b -> c) -> Dynamic t a -> Event t b -> Event t c attachDynWithMaybe :: Reflex t => (a -> b -> Maybe c) -> Dynamic t a -> Event t b -> Event t c mapDyn :: (Reflex t, MonadHold t m) => (a -> b) -> Dynamic t a -> m (Dynamic t b) forDyn :: (Reflex t, MonadHold t m) => Dynamic t a -> (a -> b) -> m (Dynamic t b) mapDynM :: (Reflex t, MonadHold t m) => (forall m'. MonadSample t m' => a -> m' b) -> Dynamic t a -> m (Dynamic t b) foldDyn :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> b) -> b -> Event t a -> m (Dynamic t b) foldDynM :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> PushM t b) -> b -> Event t a -> m (Dynamic t b) combineDyn :: (Reflex t, MonadHold t m) => (a -> b -> c) -> Dynamic t a -> Dynamic t b -> m (Dynamic t c) collectDyn :: (RebuildSortedHList (HListElems b), IsHList a, IsHList b, AllAreFunctors (Dynamic t) (HListElems b), Reflex t, MonadHold t m, HListElems a ~ FunctorList (Dynamic t) (HListElems b)) => a -> m (Dynamic t b) mconcatDyn :: (Reflex t, MonadHold t m, Monoid a) => [Dynamic t a] -> m (Dynamic t a) distributeDMapOverDyn :: (Reflex t, MonadHold t m, GCompare k) => DMap (WrapArg (Dynamic t) k) -> m (Dynamic t (DMap k)) joinDyn :: Reflex t => Dynamic t (Dynamic t a) -> Dynamic t a joinDynThroughMap :: (Reflex t, Ord k) => Dynamic t (Map k (Dynamic t a)) -> Dynamic t (Map k a) traceDyn :: (Reflex t, Show a) => String -> Dynamic t a -> Dynamic t a traceDynWith :: Reflex t => (a -> String) -> Dynamic t a -> Dynamic t a splitDyn :: (Reflex t, MonadHold t m) => Dynamic t (a, b) -> m (Dynamic t a, Dynamic t b) data Demux t k demux :: (Reflex t, Ord k) => Dynamic t k -> Demux t k getDemuxed :: (Reflex t, MonadHold t m, Eq k) => Demux t k -> k -> m (Dynamic t Bool) data HList (l :: [*]) HNil :: HList [] HCons :: e -> HList l -> HList (e : l) data FHList f l FHNil :: FHList f [] FHCons :: f e -> FHList f l -> FHList f (e : l) distributeFHListOverDyn :: (Reflex t, MonadHold t m, RebuildSortedHList l) => FHList (Dynamic t) l -> m (Dynamic t (HList l)) unsafeDynamic :: Behavior t a -> Event t a -> Dynamic t a instance IsHList (a, b, c, d, e, f) instance IsHList (a, b, c, d) instance IsHList (a, b) instance AllAreFunctors f t => AllAreFunctors f (h : t) instance AllAreFunctors f '[] instance RebuildSortedHList t => RebuildSortedHList (h : t) instance RebuildSortedHList '[] instance GCompare (HListPtr l) instance GEq (HListPtr l) instance HBuild' (a : l) r => HBuild' l (a -> r) instance l' ~ HRevApp l '[] => HBuild' l (HList l') module Reflex.Dynamic.TH -- | Quote a Dynamic expression. Within the quoted expression, you can use -- '$(unqDyn [| x |])' to refer to any expression x of type -- 'Dynamic t a'; the unquoted result will be of type a qDyn :: Q Exp -> Q Exp unqDyn :: Q Exp -> Q Exp module Reflex.Host.Class class Reflex t => ReflexHost t where type family EventTrigger t :: * -> * type family EventHandle t :: * -> * type family HostFrame t :: * -> * class (ReflexHost t, Monad m) => MonadReadEvent t m | m -> t readEvent :: MonadReadEvent t m => EventHandle t a -> m (Maybe (m a)) class (Monad m, ReflexHost t) => MonadReflexCreateTrigger t m | m -> t newEventWithTrigger :: MonadReflexCreateTrigger t m => (EventTrigger t a -> IO (IO ())) -> m (Event t a) class (Monad m, ReflexHost t, MonadReflexCreateTrigger t m) => MonadReflexHost t m | m -> t fireEventsAndRead :: MonadReflexHost t m => [DSum (EventTrigger t)] -> (forall m'. MonadReadEvent t m' => m' a) -> m a subscribeEvent :: MonadReflexHost t m => Event t a -> m (EventHandle t a) runFrame :: MonadReflexHost t m => PushM t a -> m a runHostFrame :: MonadReflexHost t m => HostFrame t a -> m a fireEvents :: MonadReflexHost t m => [DSum (EventTrigger t)] -> m () newEventWithTriggerRef :: (MonadReflexCreateTrigger t m, MonadRef m, Ref m ~ Ref IO) => m (Event t a, Ref m (Maybe (EventTrigger t a))) instance (Reflex t, MonadReflexHost t m) => MonadReflexHost t (ReaderT r m) instance (Reflex t, MonadReflexCreateTrigger t m) => MonadReflexCreateTrigger t (ReaderT r m) module Reflex.Spider.Internal debugPropagate :: Bool debugInvalidateHeight :: Bool showNodeId :: a -> String data Hold a Hold :: !(IORef a) -> !(IORef [Weak Invalidator]) -> !(IORef Any) -> !(IORef Any) -> Hold a holdValue :: Hold a -> !(IORef a) holdInvalidators :: Hold a -> !(IORef [Weak Invalidator]) holdSubscriber :: Hold a -> !(IORef Any) holdParent :: Hold a -> !(IORef Any) data EventEnv EventEnv :: !(IORef [SomeAssignment]) -> !(IORef [SomeHoldInit]) -> !(IORef [SomeMaybeIORef]) -> !(IORef Int) -> !(IORef [SomeCoincidenceInfo]) -> !(IORef (IntMap [DelayedMerge])) -> EventEnv eventEnvAssignments :: EventEnv -> !(IORef [SomeAssignment]) eventEnvHoldInits :: EventEnv -> !(IORef [SomeHoldInit]) eventEnvClears :: EventEnv -> !(IORef [SomeMaybeIORef]) eventEnvCurrentHeight :: EventEnv -> !(IORef Int) eventEnvCoincidenceInfos :: EventEnv -> !(IORef [SomeCoincidenceInfo]) eventEnvDelayedMerges :: EventEnv -> !(IORef (IntMap [DelayedMerge])) runEventM :: EventM a -> EventEnv -> IO a askToAssignRef :: EventM (IORef [SomeAssignment]) askHoldInitRef :: EventM (IORef [SomeHoldInit]) getCurrentHeight :: EventM Int putCurrentHeight :: Int -> EventM () scheduleClear :: IORef (Maybe a) -> EventM () scheduleMerge :: Int -> MergeSubscribed a -> EventM () emitCoincidenceInfo :: SomeCoincidenceInfo -> EventM () hold :: a -> Event a -> EventM (Behavior a) subscribeHold :: Event a -> Hold a -> EventM () newtype BehaviorM a BehaviorM :: ReaderT (Maybe (Weak Invalidator, IORef [SomeBehaviorSubscribed])) IO a -> BehaviorM a unBehaviorM :: BehaviorM a -> ReaderT (Maybe (Weak Invalidator, IORef [SomeBehaviorSubscribed])) IO a data BehaviorSubscribed a BehaviorSubscribedHold :: (Hold a) -> BehaviorSubscribed a BehaviorSubscribedPull :: (PullSubscribed a) -> BehaviorSubscribed a data SomeBehaviorSubscribed SomeBehaviorSubscribed :: (BehaviorSubscribed a) -> SomeBehaviorSubscribed data PullSubscribed a PullSubscribed :: !a -> !(IORef [Weak Invalidator]) -> !Invalidator -> ![SomeBehaviorSubscribed] -> PullSubscribed a pullSubscribedValue :: PullSubscribed a -> !a pullSubscribedInvalidators :: PullSubscribed a -> !(IORef [Weak Invalidator]) pullSubscribedOwnInvalidator :: PullSubscribed a -> !Invalidator pullSubscribedParents :: PullSubscribed a -> ![SomeBehaviorSubscribed] data Pull a Pull :: !(IORef (Maybe (PullSubscribed a))) -> !(BehaviorM a) -> Pull a pullValue :: Pull a -> !(IORef (Maybe (PullSubscribed a))) pullCompute :: Pull a -> !(BehaviorM a) data Invalidator InvalidatorPull :: (Pull a) -> Invalidator InvalidatorSwitch :: (SwitchSubscribed a) -> Invalidator data RootSubscribed a RootSubscribed :: !(IORef [WeakSubscriber a]) -> !(IORef (Maybe a)) -> RootSubscribed a rootSubscribedSubscribers :: RootSubscribed a -> !(IORef [WeakSubscriber a]) rootSubscribedOccurrence :: RootSubscribed a -> !(IORef (Maybe a)) data Root a Root :: !(IORef (Maybe a)) -> !(IORef (Maybe (RootSubscribed a))) -> !(RootTrigger a -> IO (IO ())) -> Root a rootOccurrence :: Root a -> !(IORef (Maybe a)) rootSubscribed :: Root a -> !(IORef (Maybe (RootSubscribed a))) rootInit :: Root a -> !(RootTrigger a -> IO (IO ())) data SomeHoldInit SomeHoldInit :: (Event a) -> (Hold a) -> SomeHoldInit newtype EventM a EventM :: ReaderT EventEnv IO a -> EventM a unEventM :: EventM a -> ReaderT EventEnv IO a data PushSubscribed a b PushSubscribed :: !(IORef (Maybe b)) -> !(IORef Int) -> !(IORef [WeakSubscriber b]) -> !(Subscriber a) -> !(EventSubscribed a) -> PushSubscribed a b pushSubscribedOccurrence :: PushSubscribed a b -> !(IORef (Maybe b)) pushSubscribedHeight :: PushSubscribed a b -> !(IORef Int) pushSubscribedSubscribers :: PushSubscribed a b -> !(IORef [WeakSubscriber b]) pushSubscribedSelf :: PushSubscribed a b -> !(Subscriber a) pushSubscribedParent :: PushSubscribed a b -> !(EventSubscribed a) data Push a b Push :: !(a -> EventM (Maybe b)) -> !(Event a) -> !(IORef (Maybe (PushSubscribed a b))) -> Push a b pushCompute :: Push a b -> !(a -> EventM (Maybe b)) pushParent :: Push a b -> !(Event a) pushSubscribed :: Push a b -> !(IORef (Maybe (PushSubscribed a b))) data MergeSubscribed k MergeSubscribed :: !(IORef (Maybe (DMap k))) -> !(IORef (DMap k)) -> !(IORef Int) -> !(IORef [WeakSubscriber (DMap k)]) -> !Any -> !(DMap (WrapArg EventSubscribed k)) -> MergeSubscribed k mergeSubscribedOccurrence :: MergeSubscribed k -> !(IORef (Maybe (DMap k))) mergeSubscribedAccum :: MergeSubscribed k -> !(IORef (DMap k)) mergeSubscribedHeight :: MergeSubscribed k -> !(IORef Int) mergeSubscribedSubscribers :: MergeSubscribed k -> !(IORef [WeakSubscriber (DMap k)]) mergeSubscribedSelf :: MergeSubscribed k -> !Any mergeSubscribedParents :: MergeSubscribed k -> !(DMap (WrapArg EventSubscribed k)) data Merge k Merge :: !(DMap (WrapArg Event k)) -> !(IORef (Maybe (MergeSubscribed k))) -> Merge k mergeParents :: Merge k -> !(DMap (WrapArg Event k)) mergeSubscribed :: Merge k -> !(IORef (Maybe (MergeSubscribed k))) data FanSubscriberKey k a FanSubscriberKey :: k a -> FanSubscriberKey k [WeakSubscriber a] data FanSubscribed k FanSubscribed :: !(IORef (DMap (FanSubscriberKey k))) -> !(EventSubscribed (DMap k)) -> !(Subscriber (DMap k)) -> FanSubscribed k fanSubscribedSubscribers :: FanSubscribed k -> !(IORef (DMap (FanSubscriberKey k))) fanSubscribedParent :: FanSubscribed k -> !(EventSubscribed (DMap k)) fanSubscribedSelf :: FanSubscribed k -> !(Subscriber (DMap k)) data Fan k Fan :: !(Event (DMap k)) -> !(IORef (Maybe (FanSubscribed k))) -> Fan k fanParent :: Fan k -> !(Event (DMap k)) fanSubscribed :: Fan k -> !(IORef (Maybe (FanSubscribed k))) data SwitchSubscribed a SwitchSubscribed :: !(IORef (Maybe a)) -> !(IORef Int) -> !(IORef [WeakSubscriber a]) -> !(Subscriber a) -> !(IORef (Weak (Subscriber a))) -> !Invalidator -> !(IORef (Weak Invalidator)) -> !(IORef [SomeBehaviorSubscribed]) -> !(Behavior (Event a)) -> !(IORef (EventSubscribed a)) -> SwitchSubscribed a switchSubscribedOccurrence :: SwitchSubscribed a -> !(IORef (Maybe a)) switchSubscribedHeight :: SwitchSubscribed a -> !(IORef Int) switchSubscribedSubscribers :: SwitchSubscribed a -> !(IORef [WeakSubscriber a]) switchSubscribedSelf :: SwitchSubscribed a -> !(Subscriber a) switchSubscribedSelfWeak :: SwitchSubscribed a -> !(IORef (Weak (Subscriber a))) switchSubscribedOwnInvalidator :: SwitchSubscribed a -> !Invalidator switchSubscribedOwnWeakInvalidator :: SwitchSubscribed a -> !(IORef (Weak Invalidator)) switchSubscribedBehaviorParents :: SwitchSubscribed a -> !(IORef [SomeBehaviorSubscribed]) switchSubscribedParent :: SwitchSubscribed a -> !(Behavior (Event a)) switchSubscribedCurrentParent :: SwitchSubscribed a -> !(IORef (EventSubscribed a)) data Switch a Switch :: !(Behavior (Event a)) -> !(IORef (Maybe (SwitchSubscribed a))) -> Switch a switchParent :: Switch a -> !(Behavior (Event a)) switchSubscribed :: Switch a -> !(IORef (Maybe (SwitchSubscribed a))) data CoincidenceSubscribed a CoincidenceSubscribed :: !(IORef (Maybe a)) -> !(IORef [WeakSubscriber a]) -> !(IORef Int) -> !(Subscriber (Event a)) -> !(EventSubscribed (Event a)) -> !(IORef (Maybe (EventSubscribed a))) -> CoincidenceSubscribed a coincidenceSubscribedOccurrence :: CoincidenceSubscribed a -> !(IORef (Maybe a)) coincidenceSubscribedSubscribers :: CoincidenceSubscribed a -> !(IORef [WeakSubscriber a]) coincidenceSubscribedHeight :: CoincidenceSubscribed a -> !(IORef Int) coincidenceSubscribedOuter :: CoincidenceSubscribed a -> !(Subscriber (Event a)) coincidenceSubscribedOuterParent :: CoincidenceSubscribed a -> !(EventSubscribed (Event a)) coincidenceSubscribedInnerParent :: CoincidenceSubscribed a -> !(IORef (Maybe (EventSubscribed a))) data Coincidence a Coincidence :: !(Event (Event a)) -> !(IORef (Maybe (CoincidenceSubscribed a))) -> Coincidence a coincidenceParent :: Coincidence a -> !(Event (Event a)) coincidenceSubscribed :: Coincidence a -> !(IORef (Maybe (CoincidenceSubscribed a))) data Box a Box :: a -> Box a unBox :: Box a -> a data WeakSubscriber a WeakSubscriberMerge :: !(k a) -> !(Weak (Box (MergeSubscribed k))) -> WeakSubscriber a WeakSubscriberSimple :: !(Weak (Subscriber a)) -> WeakSubscriber a showWeakSubscriberType :: WeakSubscriber a -> String deRefWeakSubscriber :: WeakSubscriber a -> IO (Maybe (Subscriber a)) data Subscriber a SubscriberPush :: !(a -> EventM (Maybe b)) -> (PushSubscribed a b) -> Subscriber a SubscriberMerge :: !(k a) -> (MergeSubscribed k) -> Subscriber a SubscriberFan :: (FanSubscribed k) -> Subscriber a SubscriberHold :: !(Hold a) -> Subscriber a SubscriberSwitch :: (SwitchSubscribed a) -> Subscriber a SubscriberCoincidenceOuter :: (CoincidenceSubscribed b) -> Subscriber a SubscriberCoincidenceInner :: (CoincidenceSubscribed a) -> Subscriber a showSubscriberType :: Subscriber a -> String data Event a EventRoot :: !(Root a) -> Event a EventNever :: Event a EventPush :: !(Push b a) -> Event a EventMerge :: !(Merge k) -> Event a EventFan :: !(k a) -> !(Fan k) -> Event a EventSwitch :: !(Switch a) -> Event a EventCoincidence :: !(Coincidence a) -> Event a showEventType :: Event a -> String data EventSubscribed a EventSubscribedRoot :: !(RootSubscribed a) -> EventSubscribed a EventSubscribedNever :: EventSubscribed a EventSubscribedPush :: !(PushSubscribed b a) -> EventSubscribed a EventSubscribedMerge :: !(MergeSubscribed k) -> EventSubscribed a EventSubscribedFan :: !(k a) -> !(FanSubscribed k) -> EventSubscribed a EventSubscribedSwitch :: !(SwitchSubscribed a) -> EventSubscribed a EventSubscribedCoincidence :: !(CoincidenceSubscribed a) -> EventSubscribed a data Behavior a BehaviorHold :: !(Hold a) -> Behavior a BehaviorConst :: !a -> Behavior a BehaviorPull :: !(Pull a) -> Behavior a type ResultM = EventM unsafeNewIORef :: a -> b -> IORef b push :: (a -> EventM (Maybe b)) -> Event a -> Event b pull :: BehaviorM a -> Behavior a switch :: Behavior (Event a) -> Event a coincidence :: Event (Event a) -> Event a newRoot :: IO (Root a) propagateAndUpdateSubscribersRef :: IORef [WeakSubscriber a] -> a -> EventM () run :: [DSum RootTrigger] -> ResultM b -> IO b data SomeMaybeIORef SomeMaybeIORef :: (IORef (Maybe a)) -> SomeMaybeIORef data SomeAssignment SomeAssignment :: (Hold a) -> a -> SomeAssignment data DelayedMerge DelayedMerge :: (MergeSubscribed k) -> DelayedMerge debugFinalize :: Bool mkWeakPtrWithDebug :: a -> String -> IO (Weak a) type WeakList a = [Weak a] traverseAndCleanWeakList_ :: Monad m => (wa -> m (Maybe a)) -> [wa] -> (a -> m ()) -> m [wa] -- | Propagate everything at the current height propagate :: a -> [WeakSubscriber a] -> EventM [WeakSubscriber a] data SomeCoincidenceInfo SomeCoincidenceInfo :: (Weak (Subscriber a)) -> (Subscriber a) -> (Maybe (CoincidenceSubscribed a)) -> SomeCoincidenceInfo subscribeCoincidenceInner :: Event a -> Int -> CoincidenceSubscribed a -> EventM (Maybe a, Int, EventSubscribed a) readBehavior :: Behavior a -> IO a runBehaviorM :: BehaviorM a -> Maybe (Weak Invalidator, IORef [SomeBehaviorSubscribed]) -> IO a askInvalidator :: BehaviorM (Maybe (Weak Invalidator)) askParentsRef :: BehaviorM (Maybe (IORef [SomeBehaviorSubscribed])) readBehaviorTracked :: Behavior a -> BehaviorM a readEvent :: Event a -> ResultM (Maybe a) zeroRef :: IORef Int getEventSubscribed :: Event a -> EventM (EventSubscribed a) debugSubscribe :: Bool subscribeEventSubscribed :: EventSubscribed a -> WeakSubscriber a -> IO () getEventSubscribedOcc :: EventSubscribed a -> IO (Maybe a) eventSubscribedHeightRef :: EventSubscribed a -> IORef Int subscribe :: Event a -> WeakSubscriber a -> EventM (EventSubscribed a) getRootSubscribed :: Root a -> EventM (RootSubscribed a) getPushSubscribed :: Push a b -> EventM (PushSubscribed a b) getMergeSubscribed :: GCompare k => Merge k -> EventM (MergeSubscribed k) getFanSubscribed :: GCompare k => Fan k -> EventM (FanSubscribed k) getSwitchSubscribed :: Switch a -> EventM (SwitchSubscribed a) getCoincidenceSubscribed :: Coincidence a -> EventM (CoincidenceSubscribed a) merge :: GCompare k => DMap (WrapArg Event k) -> Event (DMap k) newtype EventSelector k EventSelector :: (forall a. k a -> Event a) -> EventSelector k select :: EventSelector k -> forall a. k a -> Event a fan :: GCompare k => Event (DMap k) -> EventSelector k -- | Run an event action outside of a frame runFrame :: EventM a -> IO a invalidHeight :: Int invalidateSubscriberHeight :: WeakSubscriber a -> IO () invalidateCoincidenceHeight :: CoincidenceSubscribed a -> IO () recalculateSubscriberHeight :: WeakSubscriber a -> IO () recalculateCoincidenceHeight :: CoincidenceSubscribed a -> IO () calculateMergeHeight :: MergeSubscribed k -> IO Int calculateSwitchHeight :: SwitchSubscribed a -> IO Int calculateCoincidenceHeight :: CoincidenceSubscribed a -> IO Int data SomeSwitchSubscribed SomeSwitchSubscribed :: (SwitchSubscribed a) -> SomeSwitchSubscribed debugInvalidate :: Bool invalidate :: IORef [SomeSwitchSubscribed] -> WeakList Invalidator -> IO (WeakList Invalidator) data Spider newtype RootTrigger a RootTrigger :: (IORef [WeakSubscriber a], IORef (Maybe a)) -> RootTrigger a newtype SpiderHost a SpiderHost :: IO a -> SpiderHost a runSpiderHost :: SpiderHost a -> IO a newtype SpiderHostFrame a SpiderHostFrame :: EventM a -> SpiderHostFrame a runSpiderHostFrame :: SpiderHostFrame a -> EventM a newEventWithTriggerIO :: (RootTrigger a -> IO (IO ())) -> IO (Event Spider a) instance Functor BehaviorM instance Applicative BehaviorM instance Monad BehaviorM instance MonadIO BehaviorM instance MonadFix BehaviorM instance Functor EventM instance Applicative EventM instance Monad EventM instance MonadFix EventM instance MonadIO EventM instance Functor SpiderHost instance Applicative SpiderHost instance Monad SpiderHost instance MonadFix SpiderHost instance MonadIO SpiderHost instance Functor SpiderHostFrame instance Applicative SpiderHostFrame instance Monad SpiderHostFrame instance MonadFix SpiderHostFrame instance MonadIO SpiderHostFrame instance MonadRef SpiderHostFrame instance MonadRef SpiderHost instance MonadReflexHost Spider SpiderHost instance MonadReflexCreateTrigger Spider SpiderHostFrame instance MonadReflexCreateTrigger Spider SpiderHost instance MonadHold Spider SpiderHostFrame instance MonadSample Spider SpiderHostFrame instance MonadRef EventM instance MonadReadEvent Spider ResultM instance ReflexHost Spider instance MonadHold Spider EventM instance MonadSample Spider EventM instance MonadSample Spider BehaviorM instance MonadHold Spider SpiderHost instance MonadSample Spider SpiderHost instance Reflex Spider instance Functor Behavior instance Functor Event instance GCompare k => GCompare (FanSubscriberKey k) instance GEq k => GEq (FanSubscriberKey k) module Reflex.Spider data Spider newtype SpiderHost a SpiderHost :: IO a -> SpiderHost a runSpiderHost :: SpiderHost a -> IO a module Reflex