packages feed

FiniteCategories-0.1.0.0: test/ExampleDiagram/ExampleConstantDiagram.hs

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

An example of constant diagram.
-}
module ExampleDiagram.ExampleConstantDiagram
(
    constantDiag,
    main
)
where
    import              RandomCompositionGraph.RandomCompositionGraph
    import              System.Random                                   
    import              ExportGraphViz.ExportGraphViz                   (catToPdf,diagToPdf,diagToPdf2)
    import              Diagram.Diagram                                 (mkConstantDiagram)
    import              CompositionGraph.CompositionGraph
    import              Utils.Sample
    import              FiniteCategory.FiniteCategory
    import              Data.Maybe                                      (fromJust)

    (rcg1,newGen) = (defaultMkRandomCompositionGraph (mkStdGen 8))
    (rcg2,newGen1) = (defaultMkRandomCompositionGraph newGen)
    
    -- | The constant diagram from a random composition graph to a random object.
    constantDiag = fromJust $ mkConstantDiagram rcg1 rcg2 (fst (pickOne (ob rcg2) newGen1))

    -- | Export the constant diagram as a pdf with GraphViz.
    main = do 
        putStrLn "Start of ExampleConstantDiagram"
        catToPdf rcg1 "OutputGraphViz/Examples/Diagram/ConstantDiagram/rcg1"
        catToPdf rcg2 "OutputGraphViz/Examples/Diagram/ConstantDiagram/rcg2"
        diagToPdf constantDiag "OutputGraphViz/Examples/Diagram/ConstantDiagram/functor"
        diagToPdf2 constantDiag "OutputGraphViz/Examples/Diagram/ConstantDiagram/diag"
        putStrLn "End of ExampleConstantDiagram"