on develop help sign in
Reflex.Host: more instances + remove runFrame

This adds instances for all the mtl transformer types for the classes in Reflex.Host.Class and also removes runFrame, since it is the is same as runHostFrame.

commit139eb64feb453dbd665f5afa6fda92627497c25d authorBenno Fünfstück <benno.fuenfstueck@gmail.com> dateWed 8 Jul 2015, 21:56 (11 years ago) parentcfbb2cb
2 files changed+50−7
src/Reflex/Host/Class.hs+50−6 src/Reflex/Spider/Internal.hs−1
src/Reflex/Host/Class.hs+50−6
@@ -5,8 +5,13 @@ import Prelude hiding (mapM, mapM_, sequence, sequence_, foldl)
55
66import Reflex.Class
77
8−import Control.Monad.State.Strict hiding (mapM, mapM_, forM, forM_, sequence, sequence_)
9−import Control.Monad.Reader hiding (mapM, mapM_, forM, forM_, sequence, sequence_)
8+import Control.Monad.Trans.Class
9+import Control.Monad.Reader (ReaderT())
10+import Control.Monad.Writer (WriterT())
11+import Control.Monad.Cont (ContT())
12+import Control.Monad.Except (ExceptT())
13+import Control.Monad.RWS (RWST())
14+import Control.Monad.State (StateT())
1015import Data.Dependent.Sum (DSum)
1116import Control.Monad.Ref
1217
@@ -31,7 +36,7 @@ class (Monad m, ReflexHost t) => MonadReflexCreateTrigger t m | m -> t where
3136class (Monad m, ReflexHost t, MonadReflexCreateTrigger t m) => MonadReflexHost t m | m -> t where
3237 fireEventsAndRead :: [DSum (EventTrigger t)] -> (forall m'. (MonadReadEvent t m') => m' a) -> m a
3338 subscribeEvent :: Event t a -> m (EventHandle t a) --TODO: Return a handle, and use them in fireEventsAnRead
34− runFrame :: PushM t a -> m a
39+
3540 runHostFrame :: HostFrame t a -> m a
3641
3742fireEvents :: MonadReflexHost t m => [DSum (EventTrigger t)] -> m ()
@@ -51,12 +56,51 @@ newEventWithTriggerRef = do
5156-- Instances
5257--------------------------------------------------------------------------------
5358
54−instance (Reflex t, MonadReflexCreateTrigger t m) => MonadReflexCreateTrigger t (ReaderT r m) where
59+instance MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (ReaderT r m) where
5560 newEventWithTrigger initializer = do
5661 lift $ newEventWithTrigger initializer
5762
58−instance (Reflex t, MonadReflexHost t m) => MonadReflexHost t (ReaderT r m) where
63+instance MonadReflexHost t m => MonadReflexHost t (ReaderT r m) where
64+ fireEventsAndRead dm a = lift $ fireEventsAndRead dm a
65+ subscribeEvent = lift . subscribeEvent
66+ runHostFrame = lift . runHostFrame
67+
68+instance (MonadReflexCreateTrigger t m, Monoid w) => MonadReflexCreateTrigger t (WriterT w m) where
69+ newEventWithTrigger = lift . newEventWithTrigger
70+
71+instance (MonadReflexHost t m, Monoid w) => MonadReflexHost t (WriterT w m) where
72+ fireEventsAndRead dm a = lift $ fireEventsAndRead dm a
73+ subscribeEvent = lift . subscribeEvent
74+ runHostFrame = lift . runHostFrame
75+
76+instance MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (StateT s m) where
77+ newEventWithTrigger = lift . newEventWithTrigger
78+
79+instance MonadReflexHost t m => MonadReflexHost t (StateT s m) where
80+ fireEventsAndRead dm a = lift $ fireEventsAndRead dm a
81+ subscribeEvent = lift . subscribeEvent
82+ runHostFrame = lift . runHostFrame
83+
84+instance MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (ContT r m) where
85+ newEventWithTrigger = lift . newEventWithTrigger
86+
87+instance MonadReflexHost t m => MonadReflexHost t (ContT r m) where
88+ fireEventsAndRead dm a = lift $ fireEventsAndRead dm a
89+ subscribeEvent = lift . subscribeEvent
90+ runHostFrame = lift . runHostFrame
91+
92+instance MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (ExceptT e m) where
93+ newEventWithTrigger = lift . newEventWithTrigger
94+
95+instance MonadReflexHost t m => MonadReflexHost t (ExceptT e m) where
96+ fireEventsAndRead dm a = lift $ fireEventsAndRead dm a
97+ subscribeEvent = lift . subscribeEvent
98+ runHostFrame = lift . runHostFrame
99+
100+instance (MonadReflexCreateTrigger t m, Monoid w) => MonadReflexCreateTrigger t (RWST r w s m) where
101+ newEventWithTrigger = lift . newEventWithTrigger
102+
103+instance (MonadReflexHost t m, Monoid w) => MonadReflexHost t (RWST r w s m) where
59104 fireEventsAndRead dm a = lift $ fireEventsAndRead dm a
60105 subscribeEvent = lift . subscribeEvent
61− runFrame = lift . runFrame
62106 runHostFrame = lift . runHostFrame
src/Reflex/Spider/Internal.hs−1
@@ -1380,7 +1380,6 @@ instance R.MonadReflexHost Spider SpiderHost where
13801380 subscribeEvent e = SpiderHost $ do
13811381 _ <- runFrame $ getEventSubscribed $ unSpiderEvent e --TODO: The result of this should actually be used
13821382 return $ SpiderEventHandle (unSpiderEvent e)
1383− runFrame = SpiderHost . runFrame
13841383 runHostFrame = SpiderHost . runFrame . runSpiderHostFrame
13851384
13861385instance MonadRef SpiderHost where