FiniteCategories-0.1.0.0: test/ExampleCurrying/ExampleCurrying.hs
{-| Module : FiniteCategories
Description : An example of currying a functor.
Copyright : Guillaume Sabbagh 2021
License : GPL-3
Maintainer : guillaumesabbagh@protonmail.com
Stability : experimental
Portability : portable
An example of currying a functor.
-}
module ExampleCurrying.ExampleCurrying
(
main
)
where
import ExportGraphViz.ExportGraphViz (catToPdf,genToPdf, diagToPdf2)
import FiniteCategory.FiniteCategory
import UsualCategories.Square
import YonedaEmbedding.YonedaEmbedding
import Diagram.Diagram
import Subcategories.Subcategory
import Currying.Currying
-- | We select A and D in the Square category.
Just diag = mkDiscreteDiagram Square [A,D]
-- Just diag = mkSelect2 Square FH
-- | We Yoneda embed the Square category.
(yoneda,embedding) = yonedaEmbedding Square
-- | We compose diag and embedding.
curriedDiag = composeDiag embedding diag
-- | Export all the previously defined categories as pdf with GraphViz.
main = do
putStrLn "Start of ExampleCurrying"
diagToPdf2 (fullDiagram curriedDiag) "OutputGraphViz/Examples/ExampleCurrying/yonedaEmbedding"
diagToPdf2 (fullDiagram (uncurryDiagram curriedDiag)) "OutputGraphViz/Examples/ExampleCurrying/uncurriedYonedaEmbedding"
diagToPdf2 (fullDiagram (curryDiagram (uncurryDiagram curriedDiag))) "OutputGraphViz/Examples/ExampleCurrying/curriedUncurriedYonedaEmbedding"
diagToPdf2 (fullDiagram (switchArg curriedDiag)) "OutputGraphViz/Examples/ExampleCurrying/switchArgYoneda"
putStrLn "End of ExampleCurrying"