There was a conversation on the cafe about this last month. Check out:
Category theory is a "language" of composition. In "logical" terms, different categories are models of different axioms. That said, a "rich enough" category is suitable for encoding the "whole" of category theory (as a language -- not necessarily as a model containing sub-models. Typing introduces some complications, since types meant to help us escape logical paradoxes like Russell's by introducing a notion of "foundedness")
Hask is the category whose objects are types and whose morphisms are Haskell functions.
Hask is a very rich category, and is suitable for encoding a lot (but not all) of category theory. As far as I know, the actual boundary is as yet unknown.