{-| 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"