3 ms·
> More specifically, the common explanatory route to approach categories is usually: “here is a formal specification of what a category is; then look at these k
by nmrm 12y ago
> More specifically, the common explanatory route to approach categories is usually: “here is a formal specification of what a category is; then look at these known things from maths and theoretical computer science, and admire how they can be described using the notions of category theory.” In practice, quite a few people only adopt conceptual objects by abstracting from two or more contexts where the concepts are applicable, instead.
(Note the instead.)
I understand the author's point, and perhaps these examples are easier to follow for non-math people.
However, to be fair, this approach is the approach taken by pretty much every single description of Category Theory I've read. One of the first things MacLane does is provide a bunch of relevant and familiar examples (groups, rings, etc).
- sanderjd 12y agoJust depends on your audience! Groups and rings aren't familiar at all to lots of programmers. It's fine if category theory is actually only accessible to those to whom that kind of math is familiar, but the author of this article doesn't seem to think that's the case. His bottom-up approach tailored to a very specific programming audience seems fairly unique and I think it works pretty well!
- freyrs3 12y agoThe examples the author chose are kind of hand-wavy, unix pipes in full are obviously not categories. But I recognize how hard is to come up with examples that aren't contrived and that programmers can relate to without knowing much mathematics. That's the inherent difficulty in discussing category theory solely in terms of programming, it's hard to see the forest for the trees if you don't have a bunch of well-defined categories you can draw examples from and interrelate. In an undergraduate course one would typically start with examples from algebraic topology which has a lot of great cross-categorical relations, like how the homology group of a topological space is an example of a functor from the category of groups to the category of topological spaces.
- nmrm 12y ago> That's the inherent difficulty in discussing category theory solely in terms of programming Worse, I don't see any point in categorical models if you want to think solely in terms of programming. > one would typically start with examples from algebraic topology My initial exposure was along these lines as well, although the idea of a "course" in category theory seems a bit odd (not in the sense of wrong or bad, just not common-place). Talking about categories in the context of everyday functional programming (even where the connections are correct) always seemed abstruse and a bit silly. If you're not using categorical models, what's the point (other than giving fancy names to things)? And if you don't have some background in algebra or topology and a specific research goal, why build the models?
- freyrs3 12y agoWell I mean, there is a lot of utility in programming with categorical concepts in Haskell. There's plenty of libraries in the Haskell ecosystem that wouldn't even exist if it weren't for drawing upon category theory for guidance. Pipes is probably the best example of this school of thought on library design. [1] My point was mostly that I don't think there is a path to really understanding the full generality of category theory through functional programming alone, one has to go learn the pure mathematics as well. [1] https://hackage.haskell.org/package/pipes-4.1.1/docs/Pipes-Core.html#g:2 https://hackage.haskell.org/package/pipes-4.1.1/docs/Pipes-C...
- RBerenguel 12y agoWhen we were having the Categories subject in Algebra II (maths degree) half-jokingly with a few friends we built a category (with operations, universal properties and objects and all that funny and weird stuff) based on the columns of the university courtyard (this one: http://blocmat.files.wordpress.com/2011/03/matefestub-ba.jpg http://blocmat.files.wordpress.com/2011/03/matefestub-ba.jpg)