module Chiasma.Effect.TmuxClient where import Prelude hiding (send) import Chiasma.Data.TmuxRequest (TmuxRequest) import Chiasma.Data.TmuxResponse (TmuxResponse) data TmuxClient (i :: Type) (o :: Type) :: Effect where Send :: i -> TmuxClient i o m o Schedule :: i -> TmuxClient i o m () makeSem ''TmuxClient type ScopedTmux i o = Scoped_ (TmuxClient i o) type NativeTmux = ScopedTmux TmuxRequest TmuxResponse flush :: Member (TmuxClient e d) r => InterpreterFor (TmuxClient e d) r flush :: forall e d (r :: EffectRow). Member (TmuxClient e d) r => InterpreterFor (TmuxClient e d) r flush = (forall (rInitial :: EffectRow) x. TmuxClient e d (Sem rInitial) x -> Sem r x) -> Sem (TmuxClient e d : r) a -> Sem r a forall (e :: Effect) (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 \case Send e cmd -> e -> Sem r x forall i o (r :: EffectRow). Member (TmuxClient i o) r => i -> Sem r o send e cmd Schedule e cmd -> Sem r d -> Sem r () forall (f :: * -> *) a. Functor f => f a -> f () void (e -> Sem r d forall i o (r :: EffectRow). Member (TmuxClient i o) r => i -> Sem r o send e cmd)