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"