{-| Module : FiniteCategories Description : An example of select1 diagram. Copyright : Guillaume Sabbagh 2021 License : GPL-3 Maintainer : guillaumesabbagh@protonmail.com Stability : experimental Portability : portable An example of select1 diagram. -} module ExampleDiagram.ExampleSelectOneDiagram ( selectOne, main ) where import RandomCompositionGraph.RandomCompositionGraph import System.Random import ExportGraphViz.ExportGraphViz (catToPdf,diagToPdf,diagToPdf2) import Diagram.Diagram (mkSelect1, src) import Utils.Sample import FiniteCategory.FiniteCategory import Data.Maybe (fromJust) (rcg1,newGen) = (mkRandomCompositionGraph 10 10 3 (mkStdGen 567678)) -- | We select one object in a random category. selectOne = fromJust $ mkSelect1 rcg1 (fst (pickOne (ob rcg1) newGen)) -- | Export the diagram as a pdf with GraphViz. main = do putStrLn "Start of ExampleSelectOneDiagram" catToPdf rcg1 "OutputGraphViz/Examples/Diagram/SelectOneDiagram/rcg1" catToPdf (src selectOne) "OutputGraphViz/Examples/Diagram/SelectOneDiagram/One" diagToPdf selectOne "OutputGraphViz/Examples/Diagram/SelectOneDiagram/functor" diagToPdf2 selectOne "OutputGraphViz/Examples/Diagram/SelectOneDiagram/diag" putStrLn "End of ExampleSelectOneDiagram"