polysemy-process-0.6.0.1: Polysemy Effects for System Processes
Safe HaskellSafe-Inferred
LanguageHaskell2010

Polysemy.Process.Effect.Process

Description

 
Synopsis

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 =
 resumeAs "failed" do
   withProcess 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

Instances details
type DefiningModule Process Source # 
Instance details

Defined in Polysemy.Process.Effect.Process

type DefiningModule Process = "Polysemy.Process.Effect.Process"

recv :: forall i o e r. Member (Process i o e) r => Sem r o Source #

Obtain a chunk of stdout.

recvError :: forall i o e r. Member (Process i o e) r => Sem r e Source #

Obtain a chunk of stderr.

send :: forall i o e r. Member (Process i o e) r => i -> Sem r () Source #

Send data to stdin.

withProcess :: forall resource i o e r. Member (Scoped resource (Process i o e)) r => InterpreterFor (Process i o e) r Source #

Create a scoped resource for Process.

runProcessIO :: forall i o e err r. Member (Process i o e !! err) r => InterpretersFor [Output i !! err, Input o !! err] r Source #

Convert Output and Input to Process.