@@ -1,4 +1,4 @@
1−module Effectful.Interpreter
1+module Effectful.Handler
22 ( -- * Sending operations to the handler
33 send
44
@@ -30,50 +30,50 @@ module Effectful.Interpreter
3030 , localLiftUnliftIO
3131 ) where
3232
33−import Control.Exception
3433import Control.Monad.IO.Unlift
3534import GHC.Stack
35+import qualified Control.Exception as E
3636
3737import Effectful.Internal.Effect
3838import Effectful.Internal.Env
3939import Effectful.Internal.Monad
4040
4141----------------------------------------
42−-- Interpreter
42+-- Handler
4343
4444-- | Opaque representation of the 'Eff' environment at the point of calling the
4545-- 'send' function, i.e. right before the control is passed to the effect
4646-- handler.
4747newtype LocalEnv es = LocalEnv (Env es)
4848
49−data Interpreter (e :: Effect) = forall handlerEs. Interpreter
50− { _env :: Env handlerEs
51− , _interpret :: forall a localEs. HasCallStack
52− => LocalEnv localEs
53− -> e (Eff localEs) a
54− -> Eff handlerEs a
49+data Handler (e :: Effect) = forall handlerEs. Handler
50+ { _env :: Env handlerEs
51+ , _handle :: forall a localEs. HasCallStack
52+ => LocalEnv localEs
53+ -> e (Eff localEs) a
54+ -> Eff handlerEs a
5555 }
5656
57−runInterpreter :: Env es -> Interpreter e -> Eff (e : es) a -> IO a
58−runInterpreter es0 e m = do
57+runHandler :: Env es -> Handler e -> Eff (e : es) a -> IO a
58+runHandler es0 e m = do
5959 size0 <- sizeEnv es0
60− bracket (unsafeConsEnv e relinker es0)
61− (unsafeTailEnv size0)
62− (\es -> unEff m es)
60+ E.bracket (unsafeConsEnv e relinker es0)
61+ (unsafeTailEnv size0)
62+ (\es -> unEff m es)
6363 where
64− relinker :: Relinker Interpreter e
65− relinker = Relinker $ \relink Interpreter{..} -> do
64+ relinker :: Relinker Handler e
65+ relinker = Relinker $ \relink Handler{..} -> do
6666 env <- relink _env
67− pure Interpreter { _env = env, .. }
67+ pure Handler { _env = env, .. }
6868
6969----------------------------------------
70−-- Sending commands
70+-- Sending operations
7171
72−-- | Send an operation of a given effect to the interpreter for execution.
72+-- | Send an operation of a given effect to its handler for execution.
7373send :: (HasCallStack, e :> es) => e (Eff es) a -> Eff es a
7474send op = unsafeEff $ \es -> do
75− Interpreter{..} <- getEnv es
76− unEff (_interpret (LocalEnv es) op) _env
75+ Handler{..} <- getEnv es
76+ unEff (_handle (LocalEnv es) op) _env
7777
7878----------------------------------------
7979-- Interpretation
@@ -84,9 +84,9 @@ interpret
8484 -- ^ The effect handler.
8585 -> Eff (e : es) a
8686 -> Eff es a
87−interpret interpreter m = unsafeEff $ \es -> do
87+interpret handler m = unsafeEff $ \es -> do
8888 les <- forkEnv es
89− runInterpreter es (Interpreter les $ \_ -> interpreter) m
89+ runHandler es (Handler les $ \_ -> handler) m
9090
9191-- | Interpret a higher order effect.
9292--
@@ -97,9 +97,9 @@ interpretM
9797 -- ^ The effect handler.
9898 -> Eff (e : es) a
9999 -> Eff es a
100−interpretM interpreter m = unsafeEff $ \es -> do
100+interpretM handler m = unsafeEff $ \es -> do
101101 les <- forkEnv es
102− runInterpreter es (Interpreter les interpreter) m
102+ runHandler es (Handler les handler) m
103103
104104----------------------------------------
105105-- Reinterpretation
@@ -112,10 +112,10 @@ reinterpret
112112 -- ^ The effect handler.
113113 -> Eff (e : es) a
114114 -> Eff es b
115−reinterpret runHandlerEs interpreter m = unsafeEff $ \es -> do
115+reinterpret runHandlerEs handler m = unsafeEff $ \es -> do
116116 les0 <- forkEnv es
117117 (`unEff` les0) . runHandlerEs . unsafeEff $ \les -> do
118− runInterpreter es (Interpreter les $ \_ -> interpreter) m
118+ runHandler es (Handler les $ \_ -> handler) m
119119
120120-- | Interpret a higher order effect using other effects.
121121--
@@ -128,10 +128,10 @@ reinterpretM
128128 -- ^ The effect handler.
129129 -> Eff (e : es) a
130130 -> Eff es b
131−reinterpretM runHandlerEs interpreter m = unsafeEff $ \es -> do
131+reinterpretM runHandlerEs handler m = unsafeEff $ \es -> do
132132 les0 <- forkEnv es
133133 (`unEff` les0) . runHandlerEs . unsafeEff $ \les -> do
134− runInterpreter es (Interpreter les interpreter) m
134+ runHandler es (Handler les handler) m
135135
136136----------------------------------------
137137-- Unlifts