{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -Wall #-}
module Control.Process.ProcessHandle
( ProcessHandle,
GetProcessHandle (..),
HasProcessHandle (..),
ReviewProcessHandle (..),
AsProcessHandle (..),
)
where
import Control.Category (id)
import Control.Lens (Getter, Lens', Prism', Review, unto)
import System.Process (ProcessHandle)
class GetProcessHandle a where
getProcessHandle ::
Getter a ProcessHandle
instance GetProcessHandle ProcessHandle where
getProcessHandle :: Getter ProcessHandle ProcessHandle
getProcessHandle = (ProcessHandle -> f ProcessHandle)
-> ProcessHandle -> f ProcessHandle
forall a. a -> a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id
{-# INLINE getProcessHandle #-}
class (GetProcessHandle a) => HasProcessHandle a where
processHandle ::
Lens' a ProcessHandle
instance HasProcessHandle ProcessHandle where
processHandle :: Lens' ProcessHandle ProcessHandle
processHandle =
(ProcessHandle -> f ProcessHandle)
-> ProcessHandle -> f ProcessHandle
forall a. a -> a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id
class ReviewProcessHandle a where
reviewProcessHandle ::
Review a ProcessHandle
instance ReviewProcessHandle ProcessHandle where
reviewProcessHandle :: Review ProcessHandle ProcessHandle
reviewProcessHandle = (ProcessHandle -> ProcessHandle)
-> Optic
p f ProcessHandle ProcessHandle ProcessHandle ProcessHandle
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Profunctor p, Bifunctor p, Functor f) =>
(b -> t) -> Optic p f s t a b
unto ProcessHandle -> ProcessHandle
forall a. a -> a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id
{-# INLINE reviewProcessHandle #-}
class (ReviewProcessHandle a) => AsProcessHandle a where
_ProcessHandle ::
Prism' a ProcessHandle
instance AsProcessHandle ProcessHandle where
_ProcessHandle :: Prism' ProcessHandle ProcessHandle
_ProcessHandle =
p ProcessHandle (f ProcessHandle)
-> p ProcessHandle (f ProcessHandle)
forall a. a -> a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id