FiniteCategories (hackage): This package provides tools to create categories at the value level. This is different from the Hask category where types are objects in a category with infinite objects and arrows, here we construct categories where objects and arrows are arbitrary values so that we can change categories during runtime. Each category implements two functions following the category structure axioms : ar which returns arrows between two objects of the category and identity which returns the identity of an object. A FiniteCategory implements an additional function : ob which returns objects of the category. Thanks to these functions, we can construct automatically all the usual constructions on the categories (limits and colimits, adjunctions, Yoneda embedding, etc.) Functors are different from usual Functor typeclass, we store functors as mapping between objects and morphisms of two categories. This package is also different from the package data-category because we can enumerate objects and arrows in a finite category.  This allows us to construct limit, colimits, adjunctions, etc. automatically for arbitrary finite categories. On the other hand, we loose typecheck at compilation time which ensures that composition is sound in Hask, composition in our package might lead to an error raised during runtime. See the Readme file for installation help.
Keywords: data|gpl|library|maths