Most of introduction on Category theory starts with the definition of a category first,
then give some example. Which I believe is wrong.
It's same wrong way that we are taught on mathematics in university.
Teaching definition, theory first, then give example, exercise is a totally wrong way of teaching math.
This way assume gives us a few axioms, rules, then we can reduce the whole mathematic world,
we can select rule and axioms to solve problem, which is totally wrong.
This way assume human as a computer, a rule deduction system, but think this way:
assuming we have 1 axiom
by simple replace rule, we get 1 corollaries.
so next step , we have to choose from 2 (axiom + corollaries)
and next , we apply replace rule, get 1 more corollaries, now we have 3 choices. ...
the search space is 1 * 2 * 3 * 4 .. = n!
obviously , human mind are not good at this way of thinking. Just take a look how popular of simple
puzzle games on iTune, you can agree with me.
From my own personal experience, my brain never works this way. It can easily image a 2d image,
then remember there a 7 corollaries.
I believe Feynman( a great physicist) learning mathematics by himself. From a book I ready about him,
he seemed invented a whole system about mathematics by him own, and one day , when he discuss with
other classmate, he found nobody can understand him.
So my point is : mathematics should be learned by yourself, not taught by someone.
Give yourself a few problems, maybe not math problem, solve them, find the common things between them, abstract them .
Example 1 : we found
(1 + 2 ) * 3 = 9 = 1*3 + 2 * 3
(2 + 3) * 4 = 4 * 2 + 4 * 3
...
so what's common among them ? think yourself before reading.
( This is important , and maybe the only way to learn math . Think yourself before reading )
What's common : two numbers add first , then multiply a third number, can multiply to the third number each first, then add.
But the above sentence is too verbose, the third number appeared twice, how about we replace it with z?
also, what number here is not important, how about we use x, y to represent any number?
so we get
(x +y) * z = x *z + y *z (1)
Now we get Algebra : using x,y,z to represent any numbers, we found equations that can be used to any numbers!!
This might seemed to be to simple for most of adults, some let continue to some difficulty ones.
we already might now
x ^ (m+n) = x^m * x^n (2)
( ^ is for power , 2 ^3 = 8, 2 ^ 4 = 16)
so what's common about (1) and (2) ??? ( Think, before you continue)
first , I'll change some variable in (2) to get some hint.
z ^ ( x + y) = z ^ x * z ^ y (3)
z * ( x + y) = z * x + z * y (4)
secondly, there are too many z^ in (3), how about we use f to replace z^ ?
f(x+y) = f x * f y (5)
use g to replace z*
g(x+y) = gx + gy (6)
so now we have the concept of
function !
But still, the x,y in (5) and (6) appeared twice, can we remove it ? (Think !!)
how about we image + (add symbol ) as a pipe with 2 input, 1 output ?
and f as a pipe of 1 input , 1 output ? so f(x+y) become
x --->
+ ---> f ---> f(x+y)
x --->
for simplicity , we just write
+ f
to represent above picture.
Now your exercise : draw picture of fx * fy
f(x+y) = fx * fy will change to
--> --> f
+ f = *
--> --> f
we use II f to represent a pair of f , so
+ f = (II f) * (7)
now can you image we can use (7) to represent both z* (x+y) = z *x + z*y and z^(x+y) = ...?
Now take a look at the pair II , it take a function ( pipe), and return a pair of pipe ! It's a
functor !
Also we found a lot of binary function has equations like (7), so we abstract the concept of binary operator , and get
b1 f = (II f) b2 where b1 ,b2 are binary function. (8)
I'm a little lazy now, but I'm telling you (8) can be abstract again to get
homomorphism,
and natural transformation , category .....
The following link is a good article worth reading .
http://betterexplained.com/articles/developing-your-intuition-for-math/