!XQS E      !"#$%&'()*+,-./0123456789:;<=>?@ABCD2019 Emily PillmoreBSD$Emily Pillmore <emilypi@cohomolo.gy> Experimental TypeFamiliesSafeHV4microlens-processClassy E into the raw command of a Fmicrolens-processClassy E into the shell command of a Fmicrolens-processA E into the G case of a F Examples:%ShellCommand "ls -l" ^? _ShellCommand Just "ls -l",RawCommand "/bin/ls" ["-l"] ^? _ShellCommandNothingmicrolens-processA E into the H case of a F Examples:*RawCommand "/bin/ls" ["-l"] ^? _RawCommandJust ("/bin/ls",["-l"]),RawCommand "/bin/ls" ["-l"] ^? _ShellCommandNothing/RawCommand "/bin/ls" ["-l"] ^. _RawCommand . _1 "/bin/ls"/RawCommand "/bin/ls" ["-l"] ^. _RawCommand . _2["-l"]microlens-processE into the arguments of a command Examples:(RawCommand "/bin/ls" ["-l"] ^. arguments["-l"]microlens-process-Append an argument to the argument list of a H Examples:*arguing "-h" $ RawCommand "/bin/ls" ["-l"] RawCommand "/bin/ls" ["-l","-h"]7arguing "-h" (RawCommand "/bin/ls" ["-l"]) ^. arguments ["-l","-h"]2019 Emily PillmoreBSD$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalTypeFamilies, Rank2TypesSafeSX% microlens-process#Classy lens for types with a stderr microlens-process#Classy lens for types with a stdoutmicrolens-process"Classy lens for types with a stdinmicrolens-processLens into the I entry of the J recordmicrolens-processLens into the K entry of the J recordmicrolens-processLens into the L entry of the J recordmicrolens-processLens into the M entry of the J recordmicrolens-processLens into the N entry of the J recordmicrolens-processLens into the O entry of the J recordmicrolens-processLens into the P entry of the J recordmicrolens-processLens into the Q entry of the J recordmicrolens-processLens into the R entry of the J recordmicrolens-processLens into the S entry of the J recordmicrolens-processLens into the T entry of the J recordmicrolens-processLens into the U entry of the J recordmicrolens-processLens into the V entry of the J recordmicrolens-processLens into the W entry of the J recordmicrolens-processLens into the X entry of the J record  2019 Emily PillmoreBSD$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalTypeFamilies, Rank2TypesSafe3N %microlens-process)A convenient handler for the output of a Y call.'microlens-process%a handle to stdin if it was requested(microlens-process&a handle to stdout if it was requested)microlens-process&a handle to stderr if it was requested*microlens-processva process handle, containing a pid lock, information regarding ctcl-c delegation, and closed/open handle status info.+microlens-process)A lens into the stdin handle if requested,microlens-process*A lens into the stdout handle if requested-microlens-process*A lens into the stderr handle if requested.microlens-processA lens into the process handle/microlens-processAn isomorphism between a % and its tuple representation0microlens-processA default for a J %&'()*+,-./0 %&'()*+,-./02019 Emily PillmoreBSD$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalTypeFamilies, Rank2TypesSafeHSVXL 1microlens-process3Class constraint proving a type has a prism into a Z via a [ structure. Any \ will have a prism into ] - it is just an overwrite to ].3microlens-process3Class constraint proving a type has a prism into a Z via a [ structure. Any \ will have a prism into ^ - it is just an overwrite to ^5microlens-process3Class constraint proving a type has a prism into a Z via a [ structure.7microlens-process4Class constraint proving a type has a prism into an _ structure. Any \ will have a prism into _ - it is just an overwrite to _9microlens-processA E into the _ structure of a \:microlens-processA E into the [ structure's Handle for a \;microlens-processA E into the ^ structure of a \<microlens-processA E into the ] structure of a \=microlens-processGiven a lens into a \, overwrite to _5 so that the stream inherits from its parent process Examples:inheriting ($) CreatePipeInherit>microlens-processGiven a lens into a \, overwrite to ^. Examples:piping ($) NoStream CreatePipe?microlens-processGiven a lens into a \% and a handle, set the handle using [g. Note that this is the only really interesting case for anything with a lens into a handle inculding \. Examples:3handling ($) System.stdin $ UseHandle System.stdoutUseHandle {handle: <stdin>}"handling ($) System.stdout InheritUseHandle {handle: <stdout>}@microlens-processGiven a lens into a \ , set to ] Examples:nostreaming ($) InheritNoStream123456789:;<=>?@9:;<34785612=>?@2019 Emily PillmoreBSD$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalTypeFamilies, Rank2TypesSafeN- +,-./123456789:;<-9:;</+,-.78563412 2019 Emily PillmoreBSD$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalTypeFamilies, RankNTypesSafeSXR!9 %&'()*+,-./0123456789:;<=>?@`      !"#$%&'()*+,,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPNOQNORNOSNOTNOUNOVNOWNOXNOYNOZNO[NO\NO]NO^NO_NO`NOaNObNcdefgNOhNOiNOjNOkNOlm0microlens-process-0.2.0.2-5vZZVjfjlK243WNwm4ZbNu System.Process.Microlens.CmdSpec&System.Process.Microlens.CreateProcess'System.Process.Microlens.ProcessHandler"System.Process.Microlens.StdStreamSystem.Process.Microlens.OpticsSystem.Process.MicrolensIsRaw_RawIsShell_Shell _ShellCommand _RawCommand argumentsarguing$fIsShellCmdSpec$fIsRawCmdSpec HasStderr_Stderr HasStdout_StdoutHasStdin_Stdincmdspec_cwd_env_stdin_stdout_stderr_closefds creategroup delegatectlc newsession detachconsolecreatenewconsole childgroup childuseruseprocessjobs$fHasStdinCreateProcess$fHasStdinStdStream$fHasStdoutCreateProcess$fHasStdoutStdStream$fHasStderrCreateProcess$fHasStderrStdStreamProcessHandler_hstdin_hstdout_hstderr_hhandlehstdinhstdouthstderrhhandle_HandlerdefaultCreateProcess IsNoStream _NoStreams IsCreatePipe _CreatesPipe IsUseHandle _UsesHandle IsInherit _Inherits_Inherit _UseHandle _CreatePipe _NoStream inheritingpipinghandling nostreaming$fIsInheritStdStream$fIsUseHandleStdStream$fIsCreatePipeStdStream$fIsNoStreamStdStream)microlens-0.4.11.2-Ecy0HNwIglV6pyNsLPomsRLens.Micro.Type Traversal'process-1.6.3.0System.Process.CommonCmdSpec ShellCommand RawCommandcmdspec CreateProcesscwdenvstd_instd_outstd_err close_fds create_group delegate_ctlc new_sessiondetach_consolecreate_new_console child_group child_useruse_process_jobsSystem.Process createProcessbaseGHC.IO.Handle.TypesHandle UseHandle StdStreamNoStream CreatePipeInherit