@@ -160,24 +160,30 @@ execEffect e0 (Eff m) = unsafeEff $ \es0 -> do
161getEffect :: e :> es => Eff es (i e)
161getEffect :: e :> es => Eff es (i e)
162getEffect = unsafeEff $ \es -> getEnv es
162getEffect = unsafeEff $ \es -> getEnv es
163+{-# INLINE getEffect #-}
164putEffect :: e :> es => i e -> Eff es ()
165putEffect :: e :> es => i e -> Eff es ()
165putEffect e = unsafeEff $ \es -> unsafePutEnv e es
166putEffect e = unsafeEff $ \es -> unsafePutEnv e es
167+{-# INLINE putEffect #-}
167stateEffect :: e :> es => (i e -> (a, i e)) -> Eff es a
169stateEffect :: e :> es => (i e -> (a, i e)) -> Eff es a
168stateEffect f = unsafeEff $ \es -> unsafeStateEnv f es
170stateEffect f = unsafeEff $ \es -> unsafeStateEnv f es
171+{-# INLINE stateEffect #-}
170localEffect :: e :> es => (i e -> i e) -> Eff es a -> Eff es a
173localEffect :: e :> es => (i e -> i e) -> Eff es a -> Eff es a
171localEffect f (Eff m) = unsafeEff $ \es -> do
174localEffect f (Eff m) = unsafeEff $ \es -> do
172 bracket (unsafeStateEnv (\e -> (e, f e)) es)
175 bracket (unsafeStateEnv (\e -> (e, f e)) es)
173 (\e -> unsafePutEnv e es)
176 (\e -> unsafePutEnv e es)
174 (\_ -> m es)
177 (\_ -> m es)
178+{-# INLINE localEffect #-}
176readerEffectM :: e :> es => (i e -> Eff es a) -> Eff es a
180readerEffectM :: e :> es => (i e -> Eff es a) -> Eff es a
177readerEffectM f = unsafeEff $ \es -> getEnv es >>= \e -> unEff (f e) es
181readerEffectM f = unsafeEff $ \es -> getEnv es >>= \e -> unEff (f e) es
182+{-# INLINE readerEffectM #-}
179stateEffectM :: e :> es => (i e -> Eff es (a, i e)) -> Eff es a
184stateEffectM :: e :> es => (i e -> Eff es (a, i e)) -> Eff es a
180stateEffectM f = unsafeEff $ \es -> do
185stateEffectM f = unsafeEff $ \es -> do
181 (a, e) <- (\e -> unEff (f e) es) =<< getEnv es
186 (a, e) <- (\e -> unEff (f e) es) =<< getEnv es
182 unsafePutEnv e es
187 unsafePutEnv e es
189+{-# INLINE stateEffectM #-}