on master help sign in
add PrimMonad instance
ca44403hsloan
lib/frontend/src/Obelisk/Frontend.hs+5−2
@@ -59,13 +59,12 @@ type ObeliskWidget t route m =
59 , MonadRef (Performable m)
59 , MonadRef (Performable m)
60 , Ref (Performable m) ~ Ref IO
60 , Ref (Performable m) ~ Ref IO
61 , MonadFix (Performable m)
61 , MonadFix (Performable m)
62− , PrimMonad m
63 , EventWriter t (Endo route) m
62 , EventWriter t (Endo route) m
64 )
63 )
65
64
66data Frontend route = Frontend
65data Frontend route = Frontend
67 { _frontend_head :: !(forall t m. ObeliskWidget t route m => RoutedT t route m ())
66 { _frontend_head :: !(forall t m. ObeliskWidget t route m => RoutedT t route m ())
68− , _frontend_body :: !(forall t m x. (MonadWidget t m, ObeliskWidget t route m, HasJS x m) => RoutedT t route m ())
67+ , _frontend_body :: !(forall t m x. (MonadWidget t m, PrimMonad m, ObeliskWidget t route m, HasJS x m) => RoutedT t route m ())
69 , _frontend_title :: !(route -> Text)
68 , _frontend_title :: !(route -> Text)
70 , _frontend_notFoundRoute :: !(Text -> route) --TODO: Instead, maybe we should just require that the `parse` Monad for routeEncoder be `Identity`
69 , _frontend_notFoundRoute :: !(Text -> route) --TODO: Instead, maybe we should just require that the `parse` Monad for routeEncoder be `Identity`
71 }
70 }
@@ -152,3 +151,7 @@ runFrontend validFullEncoder frontend = do
152 runWithHeadAndBody $ \appendHead appendBody -> runMyRouteViewT $ do
151 runWithHeadAndBody $ \appendHead appendBody -> runMyRouteViewT $ do
153 mapRoutedT (mapEventWriterT appendHead) $ _frontend_head frontend
152 mapRoutedT (mapEventWriterT appendHead) $ _frontend_head frontend
154 mapRoutedT (mapEventWriterT appendBody) $ _frontend_body frontend
153 mapRoutedT (mapEventWriterT appendBody) $ _frontend_body frontend
154+
155+instance PrimMonad m => PrimMonad (EventWriterT t w m) where
156+ type PrimState (EventWriterT t w m) = PrimState m
157+ primitive = lift . primitive
lib/route/src/Obelisk/Route/Frontend.hs+4
@@ -114,6 +114,10 @@ instance MonadTransControl (RoutedT t r) where
114 liftWith = defaultLiftWith RoutedT unRoutedT
114 liftWith = defaultLiftWith RoutedT unRoutedT
115 restoreT = defaultRestoreT RoutedT
115 restoreT = defaultRestoreT RoutedT
116
116
117+instance PrimMonad m => PrimMonad (RoutedT t r m ) where
118+ type PrimState (RoutedT t r m) = PrimState m
119+ primitive = lift . primitive
120+
117instance DomBuilder t m => DomBuilder t (RoutedT t r m) where
121instance DomBuilder t m => DomBuilder t (RoutedT t r m) where
118 type DomBuilderSpace (RoutedT t r m) = DomBuilderSpace m
122 type DomBuilderSpace (RoutedT t r m) = DomBuilderSpace m
119
123