| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Polysemy.Process.Effect.Process
Description
Synopsis
- data Process i o e :: Effect where
- recv :: forall i o e r. Member (Process i o e) r => Sem r o
- recvError :: forall i o e r. Member (Process i o e) r => Sem r e
- send :: forall i o e r. Member (Process i o e) r => i -> Sem r ()
- withProcess :: forall resource i o e err r. Member (Scoped resource (Process i o e !! err)) r => InterpreterFor (Process i o e !! err) r
Documentation
data Process i o e :: Effect where Source #
Abstraction of a process with stdinstdoutstderr.
This effect is intended to be used in a scoped manner:
import Polysemy.Resume
import Polysemy.Conc
import Polysemy.Process
import qualified System.Process.Typed as System
prog :: Member (Scoped resource (Process Text Text e !! err)) r => Sem r Text
prog =
withProcess do
resumeAs "failed" do
send "input"
recv
main :: IO ()
main = do
out <- runConc $ interpretProcessNative (System.proc "cat" []) prog
putStrLn out
Constructors
| Recv :: Process i o e m o | |
| RecvError :: Process i o e m e | |
| Send :: i -> Process i o e m () |
Instances
| type DefiningModule Process Source # | |
Defined in Polysemy.Process.Effect.Process | |
withProcess :: forall resource i o e err r. Member (Scoped resource (Process i o e !! err)) r => InterpreterFor (Process i o e !! err) r Source #
Create a scoped resource for Process.