Q)IB      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  non-portable experimentalsjoerd@w3future.com'5Natural transformations are built up of components,  one for each object z in the domain category of f and g. ? This type synonym can be used when creating data instances of Nat. f :~> g: is a natural transformation from functor f to functor g. $The contravariant functor Hom(--,X)  The covariant functor Hom(X,--) The constant functor. !The composition of two functors. The identity functor on (~>) 1The mapping of arrows by contravariant functors. -The mapping of arrows by covariant functors. > To make this type check, we need to pass the type tag along. 1The codomain, or target category, of the funcor. 0The domain, or source category, of the functor. 8Functors are represented by a type tag. The type family ( turns the tag into the actual functor. The type synonym Obj a0, when used as the type of a function argument, M is a promise that the value of the argument is not used, and only the type. > This is used to pass objects (which are types) to functions. VAn instance CategoryA (~>) a b c defines composition of the arrows a ~> b and b ~> c. !KAn instance CategoryO (~>) a declares a as an object of the category (~>). "#$$ is a synonym for %. When you need to pass an object to  a function, you can use  (obj :: type). %  !"#$%!"# $  %   !"#"#$ non-portable experimentalsjoerd@w3future.com%&'WA co-cone from F to N is a natural transformation from F to the constant functor to N. (TA cone from N to F is a natural transformation from the constant functor to N to F. )7The diagonal functor from (index-) category J to (~>). *%&'()*)*('&%%&'()** non-portable experimentalsjoerd@w3future.com +3A terminal object is the limit of the functor from 0 to (~>). ,-./5An initial object is the colimit of the functor from 0 to (~>). 0123The functor from 0% to (~>), the empty diagram in (~>). 45'The (empty) data type of the arrows in 0. +,-./012345 534/012+,-. +,-.,-./0120123445 non-portable experimentalsjoerd@w3future.com6The arrows of Unit. 7The one object of 1. 86787866788 non-portable experimentalsjoerd@w3future.com9)The arrows are the values of the monoid. :9:9:9:: non-portable experimentalsjoerd@w3future.com;LThe coproduct of 2 objects is the colimit of the functor from Pair to (~>). <=>?@HThe product of 2 objects is the limit of the functor from Pair to (~>). ABCDE?The functor from Pair to (~>), a diagram of 2 objects in (~>). FGThe arrows of Pair. HThe other object of Pair IJOne object of Pair K;<=>?@ABCDEFGHIJKJKHIGEF@ABCD;<=>?;<=>?<=>?@ABCDABCDEFFGHIIJKK non-portable experimentalsjoerd@w3future.comL$The arrows of the boolean category. MNM , the object representing true. NOPO!, the object representing false. P LMNOPOPMNLLMNNOPP non-portable experimentalsjoerd@w3future.com QRSTUVWXYThe arrows of omega, there's an arrow from a to b iff a <= b. Z.The object S n represents the successor of n. [\The object Z represents zero. ]QRSTUVWXYZ[\] \]Z[YWXTUVQRS QRSRSTUVUVWXXYZ[[\]]  non-portable experimentalsjoerd@w3future.com ^&The coproduct functor, Hask^2 -> Hask _`$The product functor, Hask^2 -> Hask ab2Any empty data type is an initial object in Hask. cdc' is a wrapper to turn instances of the " class into categorical functors. defg1An alternative way to define the initial object. h2An alternative way to define the terminal object. i>The product functor is right adjoint to the diagonal functor. j?The coproduct functor is left adjoint to the diagonal functor. ^_`abcdefghij ecdbfgh`ai^_j ^__`aabcddefghij  non-portable experimentalsjoerd@w3future.com klmnopqrstu klmnopqrstu stqropmnklu kllmnnoppqrrsttu  non-portable experimentalsjoerd@w3future.com v>FixF provides the initial F-algebra for endofunctors in Hask. wxyNA catamorphism of an F-algebra is the arrow to it from the initial F-algebra. zKThe initial F-algebra is the initial object in the category of F-algebras. {&Arrows of Alg(F) are F-homomorphisms. |"Objects of Alg(F) are F-algebras. }~(Catamorphisms for endofunctors in Hask. vwxyz{|}~ |}{zyvwx~ vwxwxyz{|}}~    !"#$%&'()*+,-.//01234567889:;;<<=>?@ABCDEFGGHIIJJKLLMMNOPQRSTTUVVWW X X Y Y Z [ [ \ ] ^ _ ` a b b c c d d e f g h i j k l m n o p p qrstuvwxyz{|}~t    data-category-0.1.0 Data.CategoryData.Category.FunctorData.Category.VoidData.Category.UnitData.Category.MonoidData.Category.PairData.Category.BooleanData.Category.OmegaData.Category.HaskData.Category.KleisliData.Category.Alg AdjunctionunitcounitTerminalUniversalInitialUniversal Component:~>Nat:-*:Hom_X:*-:HomX_Const:.:IdContraFunctorA-%FunctorA%CodDomFObjApply$$ CategoryA. CategoryOid!objColimitLimitCoconeConeDiag VoidLimitTerminalObject voidLimit terminate VoidColimit InitialObject voidColimit initializeVoidFVoidUnitUnitOMonoidA PairColimit Coproduct pairColimitinj1inj2 PairLimitProduct pairLimitproj1proj2PairFPairSndFstBooleanTruFls OmegaColimitOmegaC omegaColimit OmegaLimitOmegaL omegaLimitOmegaFOmegaSZ CoprodInHask ProdInHaskZeroEndoHaskHaskmagic initObjInHask termObjInHask prodInHaskAdjcoprodInHaskAdj KleisliAdjG KleisliAdjFKleisliMonadjoinPointedpoint kleisliAdjFixFInFoutFCataInitialFAlgebraAlgAlgebracataHaskTermMorFInitMorFbaseGHC.Err undefinedFunctNat unFunctNatVoidNatUnitNatUnitId MonoidNat:***:IdSndIdFst BooleanNatFlsTruIdTruIdFlsOmegaNatStepSGTZIdZGHC.BaseFunctorHaskNat unHaskNat KleisliNat unKleisliNatAlgNatunAlgNatAlgA