{-# LANGUAGE DerivingStrategies #-} module Data.InternalCategory.Discrete where import Data.InternalCategory ( IQuiver(..), ICategory(..), Path(Path) ) newtype Disc a = Disc a deriving stock (Int -> Disc a -> ShowS [Disc a] -> ShowS Disc a -> String (Int -> Disc a -> ShowS) -> (Disc a -> String) -> ([Disc a] -> ShowS) -> Show (Disc a) forall a. Show a => Int -> Disc a -> ShowS forall a. Show a => [Disc a] -> ShowS forall a. Show a => Disc a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall a. Show a => Int -> Disc a -> ShowS showsPrec :: Int -> Disc a -> ShowS $cshow :: forall a. Show a => Disc a -> String show :: Disc a -> String $cshowList :: forall a. Show a => [Disc a] -> ShowS showList :: [Disc a] -> ShowS Show, ReadPrec [Disc a] ReadPrec (Disc a) Int -> ReadS (Disc a) ReadS [Disc a] (Int -> ReadS (Disc a)) -> ReadS [Disc a] -> ReadPrec (Disc a) -> ReadPrec [Disc a] -> Read (Disc a) forall a. Read a => ReadPrec [Disc a] forall a. Read a => ReadPrec (Disc a) forall a. Read a => Int -> ReadS (Disc a) forall a. Read a => ReadS [Disc a] forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: forall a. Read a => Int -> ReadS (Disc a) readsPrec :: Int -> ReadS (Disc a) $creadList :: forall a. Read a => ReadS [Disc a] readList :: ReadS [Disc a] $creadPrec :: forall a. Read a => ReadPrec (Disc a) readPrec :: ReadPrec (Disc a) $creadListPrec :: forall a. Read a => ReadPrec [Disc a] readListPrec :: ReadPrec [Disc a] Read) deriving newtype (Disc a -> Disc a -> Bool (Disc a -> Disc a -> Bool) -> (Disc a -> Disc a -> Bool) -> Eq (Disc a) forall a. Eq a => Disc a -> Disc a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall a. Eq a => Disc a -> Disc a -> Bool == :: Disc a -> Disc a -> Bool $c/= :: forall a. Eq a => Disc a -> Disc a -> Bool /= :: Disc a -> Disc a -> Bool Eq, Eq (Disc a) Eq (Disc a) => (Disc a -> Disc a -> Ordering) -> (Disc a -> Disc a -> Bool) -> (Disc a -> Disc a -> Bool) -> (Disc a -> Disc a -> Bool) -> (Disc a -> Disc a -> Bool) -> (Disc a -> Disc a -> Disc a) -> (Disc a -> Disc a -> Disc a) -> Ord (Disc a) Disc a -> Disc a -> Bool Disc a -> Disc a -> Ordering Disc a -> Disc a -> Disc a forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall a. Ord a => Eq (Disc a) forall a. Ord a => Disc a -> Disc a -> Bool forall a. Ord a => Disc a -> Disc a -> Ordering forall a. Ord a => Disc a -> Disc a -> Disc a $ccompare :: forall a. Ord a => Disc a -> Disc a -> Ordering compare :: Disc a -> Disc a -> Ordering $c< :: forall a. Ord a => Disc a -> Disc a -> Bool < :: Disc a -> Disc a -> Bool $c<= :: forall a. Ord a => Disc a -> Disc a -> Bool <= :: Disc a -> Disc a -> Bool $c> :: forall a. Ord a => Disc a -> Disc a -> Bool > :: Disc a -> Disc a -> Bool $c>= :: forall a. Ord a => Disc a -> Disc a -> Bool >= :: Disc a -> Disc a -> Bool $cmax :: forall a. Ord a => Disc a -> Disc a -> Disc a max :: Disc a -> Disc a -> Disc a $cmin :: forall a. Ord a => Disc a -> Disc a -> Disc a min :: Disc a -> Disc a -> Disc a Ord, Int -> Disc a Disc a -> Int Disc a -> [Disc a] Disc a -> Disc a Disc a -> Disc a -> [Disc a] Disc a -> Disc a -> Disc a -> [Disc a] (Disc a -> Disc a) -> (Disc a -> Disc a) -> (Int -> Disc a) -> (Disc a -> Int) -> (Disc a -> [Disc a]) -> (Disc a -> Disc a -> [Disc a]) -> (Disc a -> Disc a -> [Disc a]) -> (Disc a -> Disc a -> Disc a -> [Disc a]) -> Enum (Disc a) forall a. Enum a => Int -> Disc a forall a. Enum a => Disc a -> Int forall a. Enum a => Disc a -> [Disc a] forall a. Enum a => Disc a -> Disc a forall a. Enum a => Disc a -> Disc a -> [Disc a] forall a. Enum a => Disc a -> Disc a -> Disc a -> [Disc a] forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a $csucc :: forall a. Enum a => Disc a -> Disc a succ :: Disc a -> Disc a $cpred :: forall a. Enum a => Disc a -> Disc a pred :: Disc a -> Disc a $ctoEnum :: forall a. Enum a => Int -> Disc a toEnum :: Int -> Disc a $cfromEnum :: forall a. Enum a => Disc a -> Int fromEnum :: Disc a -> Int $cenumFrom :: forall a. Enum a => Disc a -> [Disc a] enumFrom :: Disc a -> [Disc a] $cenumFromThen :: forall a. Enum a => Disc a -> Disc a -> [Disc a] enumFromThen :: Disc a -> Disc a -> [Disc a] $cenumFromTo :: forall a. Enum a => Disc a -> Disc a -> [Disc a] enumFromTo :: Disc a -> Disc a -> [Disc a] $cenumFromThenTo :: forall a. Enum a => Disc a -> Disc a -> Disc a -> [Disc a] enumFromThenTo :: Disc a -> Disc a -> Disc a -> [Disc a] Enum, Disc a Disc a -> Disc a -> Bounded (Disc a) forall a. a -> a -> Bounded a forall a. Bounded a => Disc a $cminBound :: forall a. Bounded a => Disc a minBound :: Disc a $cmaxBound :: forall a. Bounded a => Disc a maxBound :: Disc a Bounded) instance IQuiver a (Disc a) where src :: Disc a -> a src (Disc a x) = a x tgt :: Disc a -> a tgt (Disc a x) = a x instance Eq a => ICategory a (Disc a) where foldPath :: Path a (Disc a) -> Disc a foldPath (Path a x [Disc a] _ a _) = a -> Disc a forall a. a -> Disc a Disc a x