packages feed

exitcode-0.1.0.6: src/Control/Process/Pid.hs

{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TypeSynonymInstances #-}

module Control.Process.Pid(
  HasPid(..)
, AsPid(..)
) where

import Control.Category((.), id)
import Control.Lens ( iso, Lens', Prism' )
import Data.Int ( Int32 )
import System.Posix.Types ( CPid(CPid) )
import System.Process ( Pid )

class HasPid a where
  pid ::
    Lens' a Pid
  pidInt32 ::
    Lens' a Int32
  pidInt32 =
    pid .
      iso
        (\(CPid x) -> x)
        CPid

instance HasPid Pid where
  pid =
    id

class AsPid a where
  _Pid ::
    Prism' a Pid
  _PidInt32 ::
    Prism' a Int32
  _PidInt32 =
    _Pid .
      iso
        (\(CPid x) -> x)
        CPid

instance AsPid Pid where
  _Pid =
    id