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

An example of opposite category pretty printed.


-}
module Math.FiniteCategories.Opposite.Example
(
    main
)
where
    import Data.WeakSet         (powerSet, Set)
    import Data.WeakSet.Safe
    
    import Math.Categories
    import Math.FiniteCategories
    import Math.FiniteCategory
    import Math.IO.PrettyPrint
    
    
    -- | An example of opposite category pretty printed.

    main :: IO ()
    main :: IO ()
main = do
        String -> IO ()
putStrLn String
"Start of Math.FiniteCategories.Opposite.Example"
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$  Ens Char -> 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 (Set Char) -> Ens Char
forall a. Set (Set a) -> Ens a
ens(Set (Set Char) -> Ens Char)
-> (String -> Set (Set Char)) -> String -> Ens Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Set Char -> Set (Set Char)
forall a. Set a -> Set (Set a)
powerSet(Set Char -> Set (Set Char))
-> (String -> Set Char) -> String -> Set (Set Char)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.String -> Set Char
forall a. [a] -> Set a
set (String -> Ens Char) -> String -> Ens Char
forall a b. (a -> b) -> a -> b
$ String
"AB") 
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$  Op (Ens Char) -> 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 (Ens Char -> Op (Ens Char)
forall c. c -> Op c
Op (Set (Set Char) -> Ens Char
forall a. Set (Set a) -> Ens a
ens(Set (Set Char) -> Ens Char)
-> (String -> Set (Set Char)) -> String -> Ens Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Set Char -> Set (Set Char)
forall a. Set a -> Set (Set a)
powerSet(Set Char -> Set (Set Char))
-> (String -> Set Char) -> String -> Set (Set Char)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.String -> Set Char
forall a. [a] -> Set a
set (String -> Ens Char) -> String -> Ens Char
forall a b. (a -> b) -> a -> b
$ String
"AB")) 
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$  NumberCategory -> 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 (Natural -> NumberCategory
numberCategory Natural
4) 
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$  Op NumberCategory -> 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 (NumberCategory -> Op NumberCategory
forall c. c -> Op c
Op (Natural -> NumberCategory
numberCategory Natural
4)) 
        String -> IO ()
putStrLn String
"End of Math.FiniteCategories.Opposite.Example"