!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd 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 An instance of  Category (~>) declares the arrow (~>) as a category. Op (~>)& is opposite category of the category (~>). LThe category with Haskell types as objects and Haskell functions as arrows.  non-portable experimentalsjoerd@w3future.com#AA terminal universal property, a universal morphism from u to x. AAn initial universal property, a universal morphism from x to u. ' is a wrapper to turn instances of the %" class into categorical functors. The dual of a functor $The contravariant functor Hom(--,X)  The covariant functor Hom(X,--) The constant functor. !The composition of two functors. The identity functor on (~>) !eWe need a wrapper here because objects need to be of kind *, and categories are of kind * -> * -> *. ")Functors are arrows in the category Cat. #$:%! maps objects at the type level. %wFunctors map objects and arrows. As objects are represented at both the type and value level, we need 3 maps in total. &%%" maps objects at the value level. '% maps arrows. (2The codomain, or target category, of the functor. )0The domain, or source category, of the functor. CatC is the category with categories as objects and funtors as arrows. &  !"#$%&'()""#!)(%&'$   "  !"##$%&'&'() non-portable experimentalsjoerd@w3future.com*The Yoneda embedding functor. +kA functor F: Op(C) -> Set is representable if it is naturally isomorphic to the contravariant hom-functor. ,Postcompose f c is the functor such that Postcompose f c :% g = f :.: g,  for functors g that compose with f and with domain c. -.Precompose f d is the functor such that Precompose f d :% g = g :.: f,  for functors g that compose with f and with codomain d. /0"A newtype wrapper for components, E which can be useful for helper functions dealing with components. 123A component for an object z is an arrow from F z to G z. 45Natural transformations are built up of components,  one for each object z in the domain category of f and g. 56f :~> g: is a natural transformation from functor f to functor g. 73Horizontal composition of natural transformations. 8'n ! a'& returns the component for the object a of a natural transformation n. Functor category D^C. * Objects of D^C are functors from C to D. , Arrows of D^C are natural transformations. *+,-./012345678645301278./,-*+*++,--.//012123455678 non-portable experimentalsjoerd@w3future.com9The functor from 0% to (~>), the empty diagram in (~>). :;'The (empty) data type of the arrows in 0. <=>9:;<=>;<=9:>9::;<=> non-portable experimentalsjoerd@w3future.com ??The functor from Pair to (~>), a diagram of 2 objects in (~>). @AThe arrows of Pair. BCDEFG ?@ABCDEFG EDACB?@FG ?@@ACBBCDEFG non-portable experimentalsjoerd@w3future.comHThe arrows of Unit. IJHIJJHIHIIJ non-portable experimentalsjoerd@w3future.com KLMNOPQRSTUV!The product category of category c1 and c2. KLMNOPQRSTUV UVSTQROPMNKL KLLMNNOPPQRRSTTUVV non-portable experimentalsjoerd@w3future.com WXYZ[\;The arrows in Discrete n, a finite set of identity arrows. ]^_`abcWXYZ[\]^_`abc a_`\^]bcZ[WYX WYXXYZ[[\^]]^_``abc  non-portable experimentalsjoerd@w3future.com9defghiLThe coproduct of 2 objects is the colimit of the functor from Pair to (~>). jklmnoHThe product of 2 objects is the limit of the functor from Pair to (~>). pqrstu2Any empty data type is an initial object in Hask. v5An initial object is the colimit of the functor from 0 to (~>). wxyz3A terminal object is the limit of the functor from 0 to (~>). {|}~If every diagram of type j has a colimit in (~>)! there exists a colimit functor. >Applied to a natural transformation it is a generalisation of (+++): l m r = ~ ' G l r An instance of HasColimits j (~>) says that (~>) has all colimits of type j. If every diagram of type j has a limit in (~>) there exists a limit functor. >Applied to a natural transformation it is a generalisation of (***): l s r =  ' G l r An instance of HasLimits j (~>) says that (~>) has all limits of type j.  A colimit of f is a universal morphism from f to the diagonal functor. Colimits in a category (~>) by means of a diagram of type j, which is a functor from j to (~>).  A limit of f6 is a universal morphism from the diagonal functor to f. Limits in a category (~>) by means of a diagram of type j, which is a functor from j to (~>). 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. :The diagonal functor with the same domain and codomain as f. 7The diagonal functor from (index-) category J to (~>).  The vertex (or apex) of a cone. #The vertex (or apex) of a co-cone. limitUniversal` is a helper function to create the universal property from the limit and the limit factorizer. A limit of the diagram f is a cone of f. For any other cone of f with vertex n% there exists a unique morphism from n to the limit of f. colimitUniversald is a helper function to create the universal property from the colimit and the colimit factorizer. A colimit of the diagram f is a co-cone of f. For any other co-cone of f with vertex n4 there exists a unique morphism from the colimit of f to n. Unit is the terminal category. () is the terminal object in Hask. 7defghijklmnopqrstuvwxyz{|}~7~z{|}vwxyutopqrsnijklmfghde7deefghghijklmjklmnopqrspqrstuvwxywxyz{|}{|}~  non-portable experimentalsjoerd@w3future.com<The limit functor is right adjoint to the diagonal functor. =The colimit functor is left adjoint to the diagonal functor.   non-portable experimentalsjoerd@w3future.com)The arrows are the values of the monoid.   non-portable experimentalsjoerd@w3future.com 5True is the terminal object in the Boolean category. 5False is the initial object in the Boolean category. BooleanR is the category with true and false as objects, and an arrow from false to true.   non-portable experimentalsjoerd@w3future.comThe arrows of omega, there's an arrow from a to b iff a <= b.  non-portable experimentalsjoerd@w3future.com   non-portable experimentalsjoerd@w3future.comZThe category for defining the natural numbers and primitive recursion can be described as   Dialg(F,G), with F(A)=<1,A> and G(A)=<A,A>. : provides the initial F-algebra for endofunctors in Hask. RA anamorphism of an F-coalgebra is the arrow from it to the terminal F-coalgebra. NA catamorphism of an F-algebra is the arrow to it from the initial F-algebra. QThe terminal F-coalgebra is the terminal object in the category of F-coalgebras. KThe initial F-algebra is the initial object in the category of F-algebras. .Arrows of Dialg(F,G) are (F,G)-homomorphisms. ,Objects of Dialg(F,G) are (F,G)-dialgebras. (Catamorphisms for endofunctors in Hask.  non-portable experimentalsjoerd@w3future.com3The natural numbers are the initial object for the  category. @Primitive recursion is the factorizer from the natural numbers.  non-portable experimentalsjoerd@w3future.com   !!""#$%&'(())**+,-./01234455667789::;<=>>?@ABCCDEFGHIJKLMNNOOPPQQRRSTUVWXXYZ[\\]^_ ` ` a a b c d e f g h i j k l m n o p q r s t u v w x x y z { { | } ~                          [ \ ]\]\]M      data-category-0.2.0 Data.CategoryData.Category.Functor#Data.Category.NaturalTransformationData.Category.VoidData.Category.PairData.Category.UnitData.Category.ProductData.Category.DiscreteData.Category.LimitData.Category.AdjunctionData.Category.MonoidData.Category.BooleanData.Category.OmegaData.Category.KleisliData.Category.DialgData.Category.PeanoData.Category.CommaOpCategoryObjsrctgtid.TerminalUniversaltuObjectterminalMorphismterminalFactorizerInitialUniversaliuObjectinitialMorphisminitialFactorizerEndoHaskOpposite:-*:Hom_X:*-:HomX_ConstFConst:.:IdCatWCatCatA:%Functor%%%CodDomYonedaEmbedding Postcompose PrecomposeComunCom ComponentNat:~>o! VoidDiagramVoid magicVoid magicVoidOvoidNat PairDiagramPairIdSndIdFstP2P1pairNat arrowPairUnitUnitIdUnitODiagProdHom:***:Proj2Proj1:*::**:DiscreteDiagram:::NilNextDiscreteStepSIdZSZmagicZmagicZOExistsForAllunForAllHasBinaryCoproducts coproductinj|||+++BinaryCoproductHasBinaryProductsproductproj&&&*** BinaryProductZeroHasInitialObject InitialObject initialObject initializeHasTerminalObjectTerminalObjectterminalObject terminateColimitFunctor HasColimits colimitUniv LimitFunctor HasLimits limitUnivColimitUniversalColimit ColimitFamLimitUniversalLimitLimitFamCoconeConeDiagFDiag coneVertex coconeVertexlimitUniversallimitlimitFactorizercolimitUniversalcolimitcolimitFactorizer endoHaskLimitendoHaskColimitAdjArrow Adjunction mkAdjunctionunitcounit leftAdjunct rightAdjunctadjunctionInitialPropadjunctionTerminalPropinitialPropAdjunctionterminalPropAdjunctionwrapcowrapcurryAdjlimitAdj colimitAdjMonoidABooleanIdTruFlsTruIdFlsBTBFOmegaStSGTZ KleisliAdjG KleisliAdjFKleisliMonadjoinPointedpoint kleisliAdjNatNumNatFFixFInFoutFAnaCataTerminalFAlgebraInitialFAlgebra CoalgebraCoalgAlgebraAlgDialgDialgA DialgebracataHaskanaHaskprimRecPeanoPeanoA ObjectsOver ObjectsUnder ObjectsFOver ObjectsFUnder:/\:CommaA $fCategoryOp$fCategory(->)OpObjHaskO $fCategoryCatCatO RepresentableRepresentingObject represent unrepresent $fCategoryNatNatOSndFst $fCategory:*:ProdOOSOZ$fHasTerminalObjectCat$fHasTerminalObject(->) AdjCategoryMonoidO$fHasTerminalObjectBoolean$fHasInitialObjectBoolean$fCategoryBooleanTruFlsKleisliOPeanoOCommaO