module Polysemy.Env where
import Polysemy ( Member, Sem, interpret, makeSem )
import Polysemy.Input ( Input (Input) )
data Env i m a where
Env :: Env i m i
makeSem ''Env
inputToEnv :: Member (Env i) r => Sem (Input i ': r) a -> Sem r a
inputToEnv :: Sem (Input i : r) a -> Sem r a
inputToEnv = (forall (rInitial :: EffectRow) x.
Input i (Sem rInitial) x -> Sem r x)
-> Sem (Input i : r) a -> Sem r a
forall (e :: (* -> *) -> * -> *) (r :: EffectRow) a.
FirstOrder e "interpret" =>
(forall (rInitial :: EffectRow) x. e (Sem rInitial) x -> Sem r x)
-> Sem (e : r) a -> Sem r a
interpret \Input i (Sem rInitial) x
Input -> Sem r x
forall i (r :: EffectRow). Member (Env i) r => Sem r i
env
runEnvConst :: i -> Sem (Env i ': r) a -> Sem r a
runEnvConst :: i -> Sem (Env i : r) a -> Sem r a
runEnvConst i
i = (forall (rInitial :: EffectRow) x.
Env i (Sem rInitial) x -> Sem r x)
-> Sem (Env i : r) a -> Sem r a
forall (e :: (* -> *) -> * -> *) (r :: EffectRow) a.
FirstOrder e "interpret" =>
(forall (rInitial :: EffectRow) x. e (Sem rInitial) x -> Sem r x)
-> Sem (e : r) a -> Sem r a
interpret \Env i (Sem rInitial) x
Env -> i -> Sem r i
forall (f :: * -> *) a. Applicative f => a -> f a
pure i
i