úÎAÔ:œu      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ _ ` a b c d e f g h i j k l m n o p q r s t  non-portable experimentalsjoerd@w3future.com$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. 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 (~>).        non-portable experimentalsjoerd@w3future.comWA 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 (~>). &'()1Objects of Funct(C, D) are functors from C to D. *+&Functor category Funct(C, D), or D^C. 4 Arrows of Funct(C, D) are natural transformations. . Each category C needs its own data instance.  !"#$%&'()*+u+)*('%&$#!"  !""#$%&&'()**+ 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 (~>). 012The functor from 0% to (~>), the empty diagram in (~>). 34'The (empty) data type of the arrows in 0. ,-./01234v 423/01,-. ,-.-./01012334 non-portable experimentalsjoerd@w3future.com5The arrows of Unit. 6The one object of 1. 7567w6755677 non-portable experimentalsjoerd@w3future.com8)The arrows are the values of the monoid. 98989899 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 (~>). @ABCD?The functor from Pair to (~>), a diagram of 2 objects in (~>). EFThe arrows of Pair. GThe other object of Pair HIOne object of Pair J:;<=>?@ABCDEFGHIJxyz{|IJGHFDE?@ABC:;<=>:;<=>;<=>?@ABC@ABCDEEFGHHIJJ non-portable experimentalsjoerd@w3future.comKLMNO2, or the Boolean category KLMNO}~€‚OMNKLKLLMNNO non-portable experimentalsjoerd@w3future.comPQRSTUVWXThe arrows of omega, there's an arrow from a to b iff a <= b. Y.The object S n represents the successor of n. Z[\The object Z represents zero. ]PQRSTUVWXYZ[\]ƒ„…†‡ˆ\]YZ[XVWSTUPQRPQRQRSTUTUVWWXYZ[Z[\]]  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. cdThis isn'Dt really working, and there really needs to be a solution for this. ef1An alternative way to define the initial object. g2An alternative way to define the terminal object. h>The product functor is right adjoint to the diagonal functor. i?The coproduct functor is left adjoint to the diagonal functor. ^_`abc‰defghi cdbefg`ah^_i ^__`aabcdefghi  non-portable experimentalsjoerd@w3future.com jklmnopqrst jklmnopqrsŠt rspqnolmjkt jkklmmnoopqqrsst‹    !"#$%&&''()**+,--./0123455678899:;<=>?@ABCDDEFFGGHHIIJKLMNOPQQRSSTUU V V W W X Y Z [ \ ] ^ _ ` ` a a b b c d e f ghijklmnopqrstuvwxyz{ | }~data-category-0.0.3.1 Data.CategoryData.Category.FunctorData.Category.VoidData.Category.UnitData.Category.MonoidData.Category.PairData.Category.BooleanData.Category.OmegaData.Category.HaskData.Category.Kleisli:-*:Hom_X:*-:HomX_Const:.:IdContraFunctorA-%FunctorA%CodDomFApply$$ CategoryA. CategoryOid AdjunctionunitcounitColimitLimitCoconeConeTerminalUniversalInitialUniversalTermMorFInitMorFDiag:~> ComponentFunctOFunct VoidLimitTerminalObject voidLimit VoidColimit InitialObject voidColimitVoidFVoidUnitUnitOMonoidA PairColimit Coproduct pairColimitinj1inj2 PairLimitProduct pairLimitproj1proj2PairFPairSndFstTruFlsBoolean OmegaColimitOmegaC omegaColimit OmegaLimitOmegaL omegaLimitOmegaFOmegaSunSZ CoprodInHask ProdInHaskZeroHask unHaskNatmagic initObjInHask termObjInHask prodInHaskAdjcoprodInHaskAdj KleisliAdjG KleisliAdjFKleisliMonadjoinPointedpoint kleisliAdjFunctNatVoidNatUnitId:***:fstCompsndCompIdSndIdFst BooleanNatflsComptruCompFlsTruIdTruIdFlsOmegaNatStepSunStepSGTZunGTZIdZHaskNat KleisliNat