Category Theory for the Working Hacker [video]
infoq.com
infoq.com
At the end of the day, you don't need a lot of math to write CRUD apps. The more math you know, though, the more approaches you'll have to formulate and solve problems.
That said, it will probably be rather difficult to comprehend if you haven't been exposed to a good amount of other work in pure mathematics first. If you wanted one other more introductory subject, I'd recommend checking out Abstract Algebra (lots of other mathematics are expressed in its terms, also; so independent of Category Theory it would probably be time well spent. https://en.wikipedia.org/wiki/Abstract_algebra).
I love this series
https://bartoszmilewski.com/2014/10/28/category-theory-for-p...
interesting enough.
1) I will tell you why category theory is relevant to you, the working programmer.
2) Here are the 2 most important data structures that you don't use in your day job.
3) Look at how they relate in this mathy not applicable way.
4) Conclusion: lambda calculus is awesome.
What I would like to see is:
1) I will tell you why category theory is relevant to you, the working programmer.
2) Here is a realistic but simplified problem and a solution written in python that is obviously the wrong approach to solving the problem. With category theory, we know this is the wrong approach because the math is wrong (and don't go into the math).
3) Here is another example that seems like a decent approach to solving the problem. With category theory, we know this is the wrong approach because the math is wrong (and don't go into the math). Doing it our way has these benefits...
4) Conclusion: learn category theory to become a better programmer.
If you can't do that, find some other way to illustrate the concrete benefits of learning category theory. If there aren't any concrete benefits, it's like telling baseball players they should learn physics to have a better understanding of baseball.
http://www.cs.toronto.edu/~sme/presentations/cat101.pdf
I don't know category theory so I can't vet it. My skimming of it did show it was interesting, though.
Why is a "function" and "arrow"? A "function" implies an operation that is part of a larger system of organized operations. An "arrow" implies stone age technology. One is infinity more descriptive in my opinion.
Is there a reason for this?
Aside from that, would you please enlighten as to what you meant by "that's not how math works"?
In math, you are dealing with many different kinds of object, not just numbers. In fact, one of the big realizations that led to modern mathematics is that not all mathematical objects can even be coded as numbers!
Your remark about "arrow" being more general than function is correct; but functions do not map only between sets of numbers, but between arbitrary sets, some of which contain elements that are not numbers, or even encodable as such.
Renaming "arrow" to "function" is like replacing "number" with "1".
You can call them morphisms, too.
> The name comes from that kind of representation.
The representation, the way I conceive it, is a mode for displaying computational or data in a spacial manor. As such relating a computational or mathematical process to a spacial terminology would be a "step" not a stick with a rock at the end of it.
(0) Any monoid can be viewed as a category with a single object. The arrows from the object to itself are the monoid's elements.
(1) Any preorder can be viewed as a category such that, between any two objects, there is at most one arrow, precisely when the source is less or equal than the target.
(2) Given a directed graph, or more generally a quiver[0], there is a small category[1] whose objects are the quiver's nodes, and whose arrows are the paths (finite sequences of edges) from a source node to a target node.
W.r.t the "modernity" of the terms: I think category theorists are glad if they find any word that fits the concept in their minds. "Mathspeak" is not supposed to be intuitive to outsiders (and everyone is such an outsider at one point), but once you get more into it the names do start to make sense.
Generally mathematics is a field that breaks everyday-intuition constantly. Having a technolect, a "foreign language in a language" if you will, helps coping with that.
Isn't that antithetical to the entire concept of an organized science? As I understand we're meant to make commutative models of the world around us that have predicative properties. If it's not possible to easily communicate your model, then there isn't much of a point in using the terminology.
Think back to Newton's notations of calculus. They are improper and poor ways to demonstrate the information that is being spoken about [0]. I don't know anyone who doesn't actually use Leibniz's notations.
I don't think anyone can convince me that "Mathspeak" should be unintuitive.
[0] - ttps://en.wikipedia.org/wiki/Notation_for_differentiation#Newton.27s_notation