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

An example of 'FullSubcategory' of __'FinGrph'__ pretty printed.


-}
module Math.FiniteCategories.FinGrph.Example
(
    main
)
where
    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
    import              Data.Text           (Text, pack)
    
    import              Math.Categories  
    import              Math.FiniteCategories
    import              Math.IO.PrettyPrint
    import              Math.FiniteCategory
    
    
    import              Numeric.Natural
    
    
    -- | A 'FullSubcategory' __'FinGrph'__ pretty printed.

    main :: IO ()
    main :: IO ()
main = do
        String -> IO ()
putStrLn String
"Start of Math.FiniteCategories.FinGrph.Example"
        let c :: FullSubcategory
  (FinGrph Natural Text)
  (GraphHomomorphism Natural Text)
  (Graph Natural Text)
c = FinGrph Natural Text
-> Set (Graph Natural Text)
-> FullSubcategory
     (FinGrph Natural Text)
     (GraphHomomorphism Natural Text)
     (Graph Natural Text)
forall c m o. c -> Set o -> FullSubcategory c m o
FullSubcategory FinGrph Natural Text
forall n e. FinGrph n e
FinGrph (Set (Graph Natural Text)
 -> FullSubcategory
      (FinGrph Natural Text)
      (GraphHomomorphism Natural Text)
      (Graph Natural Text))
-> Set (Graph Natural Text)
-> FullSubcategory
     (FinGrph Natural Text)
     (GraphHomomorphism Natural Text)
     (Graph Natural Text)
forall a b. (a -> b) -> a -> b
$ ((Natural -> Natural)
-> (IsSmallerThan Natural -> Text)
-> NumberCategory
-> Graph Natural Text
forall c m o a b.
(FiniteCategory c m o, Morphism m o) =>
(o -> a) -> (m -> b) -> c -> Graph a b
underlyingGraphFormat Natural -> Natural
forall a. a -> a
id (Text -> IsSmallerThan Natural -> Text
forall a b. a -> b -> a
const(Text -> IsSmallerThan Natural -> Text)
-> (String -> Text) -> String -> IsSmallerThan Natural -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
.String -> Text
pack (String -> IsSmallerThan Natural -> Text)
-> String -> IsSmallerThan Natural -> Text
forall a b. (a -> b) -> a -> b
$ String
""))(NumberCategory -> Graph Natural Text)
-> (Natural -> NumberCategory) -> Natural -> Graph Natural Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Natural -> NumberCategory
numberCategory (Natural -> Graph Natural Text)
-> Set Natural -> Set (Graph Natural Text)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Natural] -> Set Natural
forall a. [a] -> Set a
set [Natural
0..Natural
2] :: FullSubcategory (FinGrph Natural Text) (GraphHomomorphism Natural Text) (Graph Natural Text)
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ FullSubcategory
  (FinGrph Natural Text)
  (GraphHomomorphism Natural Text)
  (Graph Natural Text)
-> 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 FullSubcategory
  (FinGrph Natural Text)
  (GraphHomomorphism Natural Text)
  (Graph Natural Text)
c 
        String -> IO ()
putStrLn String
"End of Math.FiniteCategories.FinGrph.Example"