@@ -367,7 +367,9 @@ type EffectHandler e es
367367 -- ^ The effect performed in the local environment.
368368 -> Eff es a
369369
370−-- | An effect handler bundled along with its environment.
370+-- | An adapter for dynamically dispatched effects.
371+--
372+-- Represents the effect handler bundled along with its environment.
371373data Handler :: Effect -> Type where
372374 Handler :: !(Env es) -> !(EffectHandler e es) -> Handler e
373375
@@ -387,49 +389,49 @@ runHandler e m = unsafeEff $ \es0 -> do
387389-- | Send an operation of the given effect to its handler for execution.
388390send :: (HasCallStack, e :> es) => e (Eff es) a -> Eff es a
389391send op = unsafeEff $ \es -> do
390− Handler env handle <- getEnv es
391− unEff (handle (LocalEnv es) op) env
392+ Handler handlerEs handle <- getEnv es
393+ unEff (handle (LocalEnv es) op) handlerEs
392394
393395----------------------------------------
394396-- Helpers
395397
396−runEffect :: handler e -> Eff (e : es) a -> Eff es (a, handler e)
398+runEffect :: adapter e -> Eff (e : es) a -> Eff es (a, adapter e)
397399runEffect e0 m = unsafeEff $ \es0 -> do
398400 size0 <- sizeEnv es0
399401 E.bracket (unsafeConsEnv e0 noRelinker es0)
400402 (unsafeTailEnv size0)
401403 (\es -> (,) <$> unEff m es <*> getEnv es)
402404
403−evalEffect :: handler e -> Eff (e : es) a -> Eff es a
405+evalEffect :: adapter e -> Eff (e : es) a -> Eff es a
404406evalEffect e m = unsafeEff $ \es0 -> do
405407 size0 <- sizeEnv es0
406408 E.bracket (unsafeConsEnv e noRelinker es0)
407409 (unsafeTailEnv size0)
408410 (\es -> unEff m es)
409411
410−execEffect :: handler e -> Eff (e : es) a -> Eff es (handler e)
412+execEffect :: adapter e -> Eff (e : es) a -> Eff es (adapter e)
411413execEffect e0 m = unsafeEff $ \es0 -> do
412414 size0 <- sizeEnv es0
413415 E.bracket (unsafeConsEnv e0 noRelinker es0)
414416 (unsafeTailEnv size0)
415417 (\es -> unEff m es *> getEnv es)
416418
417−getEffect :: e :> es => Eff es (handler e)
419+getEffect :: e :> es => Eff es (adapter e)
418420getEffect = unsafeEff $ \es -> getEnv es
419421
420−putEffect :: e :> es => handler e -> Eff es ()
422+putEffect :: e :> es => adapter e -> Eff es ()
421423putEffect e = unsafeEff $ \es -> putEnv es e
422424
423−stateEffect :: e :> es => (handler e -> (a, handler e)) -> Eff es a
425+stateEffect :: e :> es => (adapter e -> (a, adapter e)) -> Eff es a
424426stateEffect f = unsafeEff $ \es -> stateEnv es f
425427
426−stateEffectM :: e :> es => (handler e -> Eff es (a, handler e)) -> Eff es a
428+stateEffectM :: e :> es => (adapter e -> Eff es (a, adapter e)) -> Eff es a
427429stateEffectM f = unsafeEff $ \es -> E.mask $ \release -> do
428430 (a, e) <- (\e -> release $ unEff (f e) es) =<< getEnv es
429431 putEnv es e
430432 pure a
431433
432−localEffect :: e :> es => (handler e -> handler e) -> Eff es a -> Eff es a
434+localEffect :: e :> es => (adapter e -> adapter e) -> Eff es a -> Eff es a
433435localEffect f m = unsafeEff $ \es -> do
434436 E.bracket (stateEnv es $ \e -> (e, f e))
435437 (\e -> putEnv es e)