{-# OPTIONS_GHC -Wall #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TypeSynonymInstances #-} module Control.Process.FD( HasFD(..) , AsFD(..) ) where import Control.Category((.), id) import Control.Lens ( iso, Lens', Prism' ) import Data.Int ( Int32 ) import Foreign.C.Types ( CInt(CInt) ) import System.Posix.Internals ( FD ) class HasFD a where fd :: Lens' a FD fdInt32 :: Lens' a Int32 fdInt32 = (FD -> f FD) -> a -> f a forall a. HasFD a => Lens' a FD fd ((FD -> f FD) -> a -> f a) -> ((Int32 -> f Int32) -> FD -> f FD) -> (Int32 -> f Int32) -> a -> f a forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (FD -> Int32) -> (Int32 -> FD) -> Iso FD FD Int32 Int32 forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso (\(CInt Int32 x) -> Int32 x) Int32 -> FD CInt instance HasFD FD where fd :: (FD -> f FD) -> FD -> f FD fd = (FD -> f FD) -> FD -> f FD forall k (cat :: k -> k -> *) (a :: k). Category cat => cat a a id class AsFD a where _FD :: Prism' a FD _FDInt32 :: Prism' a Int32 _FDInt32 = p FD (f FD) -> p a (f a) forall a. AsFD a => Prism' a FD _FD (p FD (f FD) -> p a (f a)) -> (p Int32 (f Int32) -> p FD (f FD)) -> p Int32 (f Int32) -> p a (f a) forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (FD -> Int32) -> (Int32 -> FD) -> Iso FD FD Int32 Int32 forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso (\(CInt Int32 x) -> Int32 x) Int32 -> FD CInt instance AsFD FD where _FD :: p FD (f FD) -> p FD (f FD) _FD = p FD (f FD) -> p FD (f FD) forall k (cat :: k -> k -> *) (a :: k). Category cat => cat a a id