The general idea of category theory is to come up with formalizations of
common abstract "patterns" found in mathematical constructs. For example,
there are homomorphisms of groups, vector spaces (under linear
transformations), topological spaces (under continuous functions), etc.
Category theory abstracts these into the notions of a "morphism" or an
"arrow" (which correspond to the homomorphisms) and "objects" (which
correspond to particular spaces of a particular kind). Objects and
morphisms are (globally) taken to be undefined primitives, much how sets
are undefined primitives in set theory.
With the notion of a category in place, we can begin constructing arbitrary
categories, or proving that algebras satisfy the category axioms. It is
possible to define mappings between categories -- suitably nice mappings
are called "functors", and are morphisms in the (small) Category of
Categories.
The interesting thing about category theory is how rich it can be. It had
its origins in algebraic topology, but algebraic topology has rich
connections with the theory of lattices and order, set theory, logic, group
theory, computation, etc. For example, topological nets and filters can be
recast as categories, and limits in these categories generalize to the
categorical notion of a limit. Similarly, a topology's "closure operator"
can be recast in terms of monads -- 'join' witnesses that a monad is
idempotent, in the sense that an (m a) and an (m (m a)) are the same "kind"
of structure.
Check out Goldblatt's "Topoi - A Categorical Analysis of Logic". It
focuses specifically on modeling logics using categorical methods, and the
preliminary chapters are a fine introduction to the basics.
I'm sure you can turn that into a semester course.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20121125/887913b5/attachment.htm>