(This is not a category for pages about theory. Rather, the name of this page refers to the mathematical field of category theory.
Category theory is the field of mathematics formalizing algebraic properties of collections of transformations between mathematical objects. For example, groups and group homomorphisms, or topological spaces and continuous maps.
Formally, a category is a collection of objects, C, such that for each pair of objects (X, Y) in C, there is a collection of morphisms called M(X,Y).
Furthermore, these must satisfy the following axioms:
- For each f in M(X,Y) and each g in M(Y,Z), there is a composite, gf in M(X,Z).
- Composition is associative; if h is in M(Z,W), h(gf) = (hg)f.
- For each X, there is a special identity element id_X in M(X,X).
- f id_X = id_Y f = f.
Usually, morphisms respect the algebraic properties of the objects; they are group homomorphisms, or continuous maps, or linear transformations on vector spaces, or the like. However, they need not even be describable as functions on the category objects.
, by SaundersMacLane?
, for details. (M
acLane invented category theory)
, by BenjaminPierce
, short and sweet at 100 pages including index.
This stuff is much more approachable than it may sound. It's about stuff, and arrows between stuff. If that's sounds vague, it is, because category theory abstracts to the point where it doesn't matter very much what kind
of stuff nor of arrows are under discussion.
As such it is potentially relevant to everything.
See also the prolific writer John Baez, who has lots of stuff (er, articles) online about applications to physics (he's a quantum gravity researcher)...although I suppose this is unhelpful to anyone not interested in physics. Still, considering the advanced topics he writes about, he's very clear and a good teacher.
See also: http://setis.library.usyd.edu.au/stanford/archives/fall1997/entries/category-theory/
Here's a description that's almost comprehensible, it's from DickBotting
page - http://www.csci.csusb.edu/dick/maths/math_22_graphs.html
A category models a collection of algebras of the same type and the structure preserving mappings that connect them. They allow the definition of free objects, products and co-products in a very general form. They are a natural model to use for a data base or set of interconnected types. They can be regarded as a special kind of LabelledDirectedGraph
Consider the quote from above: They are a natural model to use for a data base or set of interconnected types.
Let's have a concrete, practical, example of their use. How about describing ParallelClassHierarchies
in terms of Categories, or anything else for that matter. Just a minute, I found this - http://www.xp123.com/wwake/dissertation/model.shtml
I am reminded of a friend's account of his category theory lecture which began with, "We will now consider the class of 'stuff'."
The late Robin Gandy, Emeritus Reader in Mathematical Logic, University of Oxford described CategoryTheory
as "A recent development in mathematics which concentrates attention not on particular
mathematical structures but on the relations between them. It has had a unifying effect in algebra and topology. Those who like to work on particular, concrete problems refer to it as 'general abstract nonsense'". (Possibly the only joke in TheNewFontanaDictionaryOfModernThought
I studied category theory. CommutingDiagrams
stuck as a very useful way of describing data structures. Kind of like UML, but with a formal foundation. You can use the same notation for class diagrams and instance diagrams.
Relational implementation ideas for categories: http://geocities.com/tablizer/sets1.htm
, including ranked links so as to have kind of "fuzzy sets".
A paper on CategoryTheory
applied to TuringMachine
One on CategoryTheory
Or see ElementsOfBasicCategoryTheory
There is a SymbolicProgramming
language called Aldor which uses Categories as part of its core ObjectModel
Is there anything a normal everyday programmer like me can read and understand? It all reads like gibberish.
It depends on why you want to know about it. Normal everyday programmers don't need to know about it at all (I claim) for doing their work. On the other hand, if you want to really expand your mind it's one of the options. It is RealMath?, though, and must be ReadLikeMath. I've just had a glance through the first 5 pages of the Turing Machine paper mentioned above and it seems like a pretty fair introduction to what Category Theory is about. Try that one and see how you get on.
[Probably good for him/her to download Aldor above, try the examples, and write his/her own test programs. Even if the MathIsHard
seeing it run in a language is fun and enables LearningByTryingSolutions
CategoryMath CategoryBook CategoryTheory CategorizationModels