As for category theory being mostly definitions, and not so much theorems, well, there's some truth in that. But don't underestimate the power of well-chosen definitions. An enormous number of mathematical structures are either topoi or closed cartesian categories. Once you understand how to map a closed cartesian category onto the lambda calculus, for example, you can design some pretty exotic programming languages. And many of the purely mathematical uses of category theory have a similar quality—smuggling theorems from one branch of mathematics to another. (One pretty reasonable introduction to category theory is "Basic Category Theory for Computer Scientists"[2], but there may be something better.)
[1] http://www.inf.uni-konstanz.de/dbis/publications/download/TG... [2] http://www.amazon.com/Category-Computer-Scientists-Foundatio...
It was pretty rough. Reactions by page:
1-2 "This is pretty easy." 3-5 "Okay, I can see how this is getting harder..." 6-... "My mind is blown."
The real difficulty is that it dives into mathematical notation that I'm not used to reading fairly quickly. I'm still slogging away at it in my spare time.
http://www.amazon.com/Category-Computer-Scientists-Foundatio...
Concise and clear, with examples that should speak to computer scientists.
However, I've always failed to see the practical interest of categories. It's nice to see how various things can be described or defined in a categorical framework. It may shade new light on some concepts, but I didn't see any useful theorems you could apply (like in vector spaces for instance). Probably I didn't go deep enough.