FiniteCategories-0.1.0.0: test/ExampleRandomDiagram/ExampleRandomDiagram.hs
{-| Module : FiniteCategories
Description : Examples of random diagrams.
Copyright : Guillaume Sabbagh 2021
License : GPL-3
Maintainer : guillaumesabbagh@protonmail.com
Stability : experimental
Portability : portable
This example shows how to use `mkRandomDiagram`.
-}
module ExampleRandomDiagram.ExampleRandomDiagram
(
main
)
where
import CompositionGraph.CompositionGraph
import RandomCompositionGraph.RandomCompositionGraph
import RandomDiagram.RandomDiagram
import System.Random
import ExportGraphViz.ExportGraphViz
import Diagram.Diagram
generateRDiags 0 gen diags = (diags,gen)
generateRDiags n gen diags = ((diag:end), finalGen)
where
(diag,newGen) = (defaultMkRandomDiagram gen)
(end,finalGen) = generateRDiags (n-1) newGen diags
exportDiags [] = putStrLn "End of ExampleRandomDiagram"
exportDiags (diag:diags) = do
putStrLn (show (length diags)++" random diagrams remaining...")
catToPdf (src diag) ("OutputGraphViz/Examples/RandomDiagram/RandomDefaultDiagram/src"++show (length diags))
catToPdf (tgt diag) ("OutputGraphViz/Examples/RandomDiagram/RandomDefaultDiagram/tgt"++show (length diags))
diagToPdf diag ("OutputGraphViz/Examples/RandomDiagram/RandomDefaultDiagram/funct"++show (length diags))
diagToPdf2 diag ("OutputGraphViz/Examples/RandomDiagram/RandomDefaultDiagram/diag"++show (length diags))
exportDiags diags
-- | Exports 5 random composition graphs as pdf.
main = do
putStrLn "Start of ExampleRandomDiagram"
exportDiags diags
where
(diags, g) = generateRDiags 5 (mkStdGen 745678765434567) []