packages feed

FiniteCategories-0.1.0.0: test/ExampleDiagonalFunctor/ExampleDiagonalFunctor.hs

{-| Module  : FiniteCategories
Description : An example of diagonal functor.
Copyright   : Guillaume Sabbagh 2021
License     : GPL-3
Maintainer  : guillaumesabbagh@protonmail.com
Stability   : experimental
Portability : portable

An example of diagonal functor.
-}
module ExampleDiagonalFunctor.ExampleDiagonalFunctor
(
    diagonalFunctor,
    main
)
where
    import              RandomCompositionGraph.RandomCompositionGraph
    import              System.Random                                   
    import              ExportGraphViz.ExportGraphViz
    import              FiniteCategory.FiniteCategory
    import              Diagram.Diagram
    import              UsualCategories.Three
    import              UsualCategories.Two
    import              DiagonalFunctor.DiagonalFunctor
    import              FunctorCategory.FunctorCategory
    import              CompositionGraph.CompositionGraph

    (rcg1,newGen) = (mkRandomCompositionGraph 6 10 4 (mkStdGen 10987654))
    
    -- | A diagonal functor.
    diagonalFunctor = mkDiagonalFunctor Two rcg1
    
    recuNatToPdf [] = putStrLn "End of natural transformation export"
    recuNatToPdf (x:xs) = do
                            natToPdf x ("OutputGraphViz/Examples/DiagonalFunctor/nat"++show (length xs))
                            recuNatToPdf xs
    
    recuDiagToPdf [] = putStrLn "End of diagrams export"
    recuDiagToPdf (x:xs) = do
                            diagToPdf2 x ("OutputGraphViz/Examples/DiagonalFunctor/diag"++show (length xs))
                            recuDiagToPdf xs

    -- | Export the diagonal functor as a pdf with GraphViz.
    main = do 
        putStrLn "Start of ExampleDiagonalFunctor"
        catToPdf rcg1 "OutputGraphViz/Examples/DiagonalFunctor/rcg1"
        recuDiagToPdf (ob.tgt $ diagonalFunctor)
        recuNatToPdf (arrows.tgt $ diagonalFunctor)
        diagToPdf2 diagonalFunctor "OutputGraphViz/Examples/DiagonalFunctor/diagonalFunctor"
        putStrLn "End of ExampleDiagonalFunctor"