exitcode-0.3.0.0: src/Control/Process/ProcessHandle.hs
{-# 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)
-- | Type class for values that can be viewed as a @ProcessHandle@.
class GetProcessHandle a where
getProcessHandle ::
Getter a ProcessHandle
instance GetProcessHandle ProcessHandle where
getProcessHandle = id
{-# INLINE getProcessHandle #-}
-- | Type class for values with a lens into a @ProcessHandle@.
class (GetProcessHandle a) => HasProcessHandle a where
processHandle ::
Lens' a ProcessHandle
instance HasProcessHandle ProcessHandle where
processHandle =
id
-- | Type class for values that can be constructed from a @ProcessHandle@.
class ReviewProcessHandle a where
reviewProcessHandle ::
Review a ProcessHandle
instance ReviewProcessHandle ProcessHandle where
reviewProcessHandle = unto id
{-# INLINE reviewProcessHandle #-}
-- | Type class for values with a prism into a @ProcessHandle@.
class (ReviewProcessHandle a) => AsProcessHandle a where
_ProcessHandle ::
Prism' a ProcessHandle
instance AsProcessHandle ProcessHandle where
_ProcessHandle =
id