On day 19 we started looking at basic concepts in category theory using Lawvere and Schanuel’s Conceptual Mathematics: A First Introduction to Categories. The book is a good introduction book into the notion of category since it spends a lot of pages explaining the basic concepts using concrete examples. The very aspect gets a bit annoying when you want to move on to more advanced concept, since it’s goes winding around.

Today I’m switching to Steve Awodey’s Category Theory. This is also a book written for non-mathematicians, but goes at faster pace, and more emphasis is placed on thinking in abstract terms.

A particular definition or a theorem is called *abstract*, when it relies only on category theoric notions, rather than some additional information about the objects and arrows. The advantage of an abstract notion is that it applies in any category immediately.

Definition 1.3In any categoryC, an arrowf: A => Bis called anisomorphism, if there is an arrow g: B => A inCsuch that:

g ∘ f = 1and_{A}f ∘ g = 1._{B}

Awodey names the above definition to be an abstract notion as it does make use only of category theoric notion.

Extending this to Scalaz, learning the nature of an abtract typeclass has the advantage of it applying in all concrete data structures that support it.

learning Scalaz — day 20