{-| Module  : FiniteCategories
Description : An exemple of a 'diagonalFunctor' pretty printed.
Copyright   : Guillaume Sabbagh 2022
License     : GPL-3
Maintainer  : guillaumesabbagh@protonmail.com
Stability   : experimental
Portability : portable

An exemple of 'diagonalFunctor' pretty printed.


-}
module Math.Functors.DiagonalFunctor.Example
(
    main
)
where
    import              Math.FiniteCategory  
    import              Math.FiniteCategories.DiscreteCategory
    import              Math.FiniteCategories.V
    import              Math.Functors.DiagonalFunctor
    import              Math.IO.PrettyPrint
    import              Math.FiniteCategory

    
    import              Data.WeakSet             (Set)
    import qualified    Data.WeakSet           as Set
    import              Data.WeakSet.Safe
    import              Data.WeakMap             (Map)
    import qualified    Data.WeakMap           as Map
    import              Data.WeakMap.Safe
    
    -- | An exemple of 'diagonalFunctor' pretty printed.

    main :: IO ()
    main :: IO ()
main = do
        String -> IO ()
putStrLn String
"Start of Math.Functors.DiagonalFunctor.Example"
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ DiscreteCategory Int -> String
forall c m o.
(FiniteCategory c m o, Morphism m o, PrettyPrint c, PrettyPrint m,
 PrettyPrint o, Eq m, Eq o) =>
c -> String
pprintFiniteCategory (Set Int -> DiscreteCategory Int
forall a. Set a -> DiscreteCategory a
discreteCategory ([Int] -> Set Int
forall a. [a] -> Set a
set [Int
1 :: Int,Int
2])) 
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ V -> String
forall c m o.
(FiniteCategory c m o, Morphism m o, PrettyPrint c, PrettyPrint m,
 PrettyPrint o, Eq m, Eq o) =>
c -> String
pprintFiniteCategory V
V 
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
  V
  VAr
  VOb
  (FunctorCategory
     (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
  (NaturalTransformation
     (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
  (Diagram (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
-> String
forall a. PrettyPrint a => a -> String
pprint (DiscreteCategory Int
-> V
-> Diagram
     V
     VAr
     VOb
     (FunctorCategory
        (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
     (NaturalTransformation
        (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
     (Diagram (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, FiniteCategory c2 m2 o2,
 Morphism m2 o2) =>
c1
-> c2
-> Diagram
     c2
     m2
     o2
     (FunctorCategory c1 m1 o1 c2 m2 o2)
     (NaturalTransformation c1 m1 o1 c2 m2 o2)
     (Diagram c1 m1 o1 c2 m2 o2)
diagonalFunctor (Set Int -> DiscreteCategory Int
forall a. Set a -> DiscreteCategory a
discreteCategory ([Int] -> Set Int
forall a. [a] -> Set a
set [Int
1 :: Int,Int
2])) V
V) 
        String -> IO ()
putStrLn String
"End of Math.Functors.DiagonalFunctor.Example"