{-| Module : FiniteCategories Description : An example of cone category. Copyright : Guillaume Sabbagh 2021 License : GPL-3 Maintainer : guillaumesabbagh@protonmail.com Stability : experimental Portability : portable An example of cone category. -} module ExampleConeCategory.ExampleConeCategory ( main ) where import RandomCompositionGraph.RandomCompositionGraph import System.Random import ExportGraphViz.ExportGraphViz import FiniteCategory.FiniteCategory import FunctorCategory.FunctorCategory import Diagram.Diagram import UsualCategories.Three import Utils.Sample import Data.Maybe import ConeCategory.ConeCategory import CommaCategory.CommaCategory import IO.PrettyPrint import RandomDiagram.RandomDiagram import IO.Parsers.SafeCompositionGraphFunctor -- | Export the cone category as a pdf with GraphViz. main = do putStrLn "Start of ExampleConeCategory" diag <- readFSCGFile "test/ExampleConeCategory/diagram.fscg" let coneCategory = mkConeCategory diag catToPdf (tgt diag) "OutputGraphViz/Examples/ConeCategory/Cone/category" diagToPdf diag "OutputGraphViz/Examples/ConeCategory/Cone/funct" diagToPdf2 diag "OutputGraphViz/Examples/ConeCategory/Cone/diag" catToPdf coneCategory "OutputGraphViz/Examples/ConeCategory/Cone/coneCategory" sequence $ (\(x,y) -> natToPdf (arrow x) ("OutputGraphViz/Examples/ConeCategory/Cone/cone"++(show y))) <$> (zip (ob coneCategory) [1..]) putStrLn "End of ExampleConeCategory"