Introduction to Category Theory
cs.nott.ac.uk
cs.nott.ac.uk
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.
Almost by definition, you can't see the point of category theory until you go deep enough. Because statements in category theory are, in a very profound sense, statements about everything, they must logically be less substantial (or at least no more substantial) than statements about any particular thing.
If that is so, then why bother making these less substantial statements? The point is precisely that they do apply to everything, so that your knowledge about categorical statements pertaining to vector spaces instantly translates to knowledge of exactly the same statements about groups, or modules, or … whatever (as long as the relevant categories satisfy the same hypotheses).
That is, from my point of view at least, the utility of category theory is almost never in what it has to say about any one discipline, but rather the connections it makes, or at least the 'automated transfer of knowledge' that it allows.
EDIT: Also, I think that, much like the monad tutorial profusion, the large number of resources for learning category theory makes people think that they are obligated to go out and find a use for it. I think one is much less likely to be successful with the mindset "where can I use category theory?", and much more likely to be successful with the mindset "I have this language in my lexicon, and so will recognise the opportunity to speak it when it arises."
Oh, I like that a lot! It's a great way the value of both "getting" CT and "getting" monads.
Natural transformations between functors gives you parametricity and "theorems for free"
Another result that's used directly is the CoYonneda lemma (but I'm still trying to understand it :) )
The point is: category theory in spite of being totally abstract offers many interesting results that can be applied to day-to-day coding :)
Even including non-termination they form a category.
Could you elaborate? This is something everyone always talks about but I've never really seen a proof/precise statement.
[0] http://www.amazon.com/Category-Theory-Oxford-Logic-Guides/dp...
Mac Lane (Categories for the Working Mathematician) also has exercises and I think the ones from the first few chapters aren't so hard.
https://byorgey.wordpress.com/catsters-guide-2/
Dr. Cheng's enthusiasm is incredible.
The relationship you're sensing appears very general, in the sense that "is there a relationship between Category Theory and Linguistics?" I definitely think there's a relationship because that's how the human intellect operates, everything is a relationship, but I do not think there is an intrinsic and meaningful relationship outside the context of general cognition.
I think Semiotics is important and the study of what the symbols in Category Theory are or why they are used is a meaningful study (and would enable a deeper understanding) but I don't think it's a prerequisite for comprehending Category Theory itself.
[0] Technically Galois connection, but that's just a specific kind of adjunction: http://www.logicmatters.net/resources/pdfs/Galois.pdf
[1] http://link.springer.com/article/10.1023%2FA%3A1018963029743...
This isn't making things much clearer.
Firstly, there simply aren't enough symbols. In programming, naming functions and variables is hard, really hard, and in math you don't have the luxury of giving long names to every separate concept. Part of the value of the notation is its compactness.
Secondly, symbols that are overloaded usually have related meanings, and much of the value in the notation is the abuse of notation that you get from it. You may think it just makes everything confusing and harder, but in truth, learning how to work with the notation is incredibly valuable, and leads to a deeper understanding of what things really are, and how they work.
The overloading is a feature, not a bug.
Use colors, use boldface, use special markers to make the symbols slightly different. Or, using computers, provide mouse-over information.
I agree that sometimes overloading can be useful, but imho when learning new stuff, it complicates matters more than necessary.
Yes, if you just want to read it without actually gaining any deep understanding or skill, use boldface, colors, words, mouse-over pop-ups. But if you want to learn something and be able to do it, you need to struggle with it. Only by doing the work do you gain the skill.
As in programming, simply reading programs gains you little, if anything. If you want to grow in skill, you need to work through the detail of programs you read, and do some programming yourself.
But at least in programming, I can do a "grep" for the symbols I want to understand :)