{-| Module : FiniteCategories Description : An example of select2 diagram. Copyright : Guillaume Sabbagh 2021 License : GPL-3 Maintainer : guillaumesabbagh@protonmail.com Stability : experimental Portability : portable An example of select2 diagram. -} module ExampleDiagram.ExampleSelectTwoDiagram ( selectTwo, main ) where import RandomCompositionGraph.RandomCompositionGraph import System.Random import ExportGraphViz.ExportGraphViz (catToPdf,diagToPdf,diagToPdf2) import Diagram.Diagram (mkSelect2, src) import Utils.Sample import FiniteCategory.FiniteCategory import Data.List ((\\)) import Data.Maybe (fromJust) (rcg1,newGen) = (mkRandomCompositionGraph 10 10 3 (mkStdGen 56767898)) -- | We select an arrow in the category. selectTwo = fromJust $ mkSelect2 rcg1 (fst (pickOne ((arrows rcg1)\\(identities rcg1)) newGen)) -- | Export the diagram as a pdf with GraphViz. main = do putStrLn "Start of ExampleSelectTwoDiagram" catToPdf rcg1 "OutputGraphViz/Examples/Diagram/SelectTwoDiagram/rcg1" catToPdf (src selectTwo) "OutputGraphViz/Examples/Diagram/SelectTwoDiagram/Two" diagToPdf selectTwo "OutputGraphViz/Examples/Diagram/SelectTwoDiagram/functor" diagToPdf2 selectTwo "OutputGraphViz/Examples/Diagram/SelectTwoDiagram/diag" putStrLn "End of ExampleSelectTwoDiagram"