packages feed

FiniteCategories-0.1.0.0: test/ExampleDiagram/ExampleSelectThreeDiagram.hs

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

An example of select3 diagram.
-}
module ExampleDiagram.ExampleSelectThreeDiagram
(
    selectThree,
    main
)
where
    import              RandomCompositionGraph.RandomCompositionGraph
    import              System.Random                                   
    import              ExportGraphViz.ExportGraphViz                   (catToPdf,diagToPdf,diagToPdf2)
    import              Diagram.Diagram                                 (mkSelect3, src)
    import              Utils.Sample
    import              FiniteCategory.FiniteCategory            hiding (FiniteCategoryError(..))
    import              Data.List                                       ((\\))
    import              Data.Maybe                                      (fromJust)

    (rcg1,newGen) = (mkRandomCompositionGraph 10 15 3 (mkStdGen 1234))
    
    (f,newGen2) = (pickOne ((arrows rcg1)\\(identities rcg1)) newGen)
    (g,newGen3) = (pickOne ((arFrom rcg1 (target f))) newGen2)
    
    -- | We select a triangle in a random category.
    selectThree = fromJust $ (mkSelect3 rcg1 f g)

    -- | Export the diagram as a pdf with GraphViz.
    main = do 
        putStrLn "Start of ExampleSelectThreeDiagram"
        catToPdf rcg1 "OutputGraphViz/Examples/Diagram/SelectThreeDiagram/rcg1"
        catToPdf (src selectThree) "OutputGraphViz/Examples/Diagram/SelectThreeDiagram/Three"
        diagToPdf selectThree "OutputGraphViz/Examples/Diagram/SelectThreeDiagram/functor"
        diagToPdf2 selectThree "OutputGraphViz/Examples/Diagram/SelectThreeDiagram/diag"
        putStrLn "End of ExampleSelectThreeDiagram"