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

module Control.Process.GroupID(
  HasGroupID(..)
, AsGroupID(..)
) where

import Control.Category(id)
import Control.Lens ( Lens', Prism' )
import System.Process.Internals ( GroupID )

class HasGroupID a where
  groupID ::
    Lens' a GroupID

instance HasGroupID GroupID where
  groupID :: Lens' GroupID GroupID
groupID =
    forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id

class AsGroupID a where
  _GroupID ::
    Prism' a GroupID

instance AsGroupID GroupID where
  _GroupID :: Prism' GroupID GroupID
_GroupID =
    forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id