Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
How category theory is applied (johndcook.com)
94 points by furcyd on April 29, 2019 | hide | past | favorite | 19 comments


It is difficult to come up with concrete examples of category theory because it is too high up the abstraction hierarchy. It normally requires stepping through several layers of abstraction to reach something concrete.

Monads are one specific application of category theory.

Of course monads in and of themselves are still very abstract, so we need to drill down to another level of concreteness by taking a look at the "Maybe", "Either", or "IO" monads.

This is still very abstract so we can drill down to another level to "does the data exist", "is there an error", and "how do I handle IO"?

Category theory is a toolbox of mental representations useful for reasoning about a particular problem set (designing formal systems that let you design formal systems). In other words, category theory is an abstract concept for solving a slightly less abstract set of problems.

Asking for concrete examples doesn't really make sense because it is too far up the abstraction hierarchy.

To make the case for the importance of category theory, it is necessary to present the entire abstraction hierarchy across a number of different real world domains. This is not something academia is good at because it tends to isolate and subdivide work into increasingly specialized fields.


Gives three examples of bits of mathematics with really strong concrete uses.

Then says that category theory "does not itself solve hard problems in topology or algebra. It clears away tangled multitudes of individually trivial problems. It puts the hard problems in clear relief and makes their solution possible.".

And doesn't give any examples.

Still sounds useless to me.


I agree, the article does not actually present anything concrete. For me, the usefulness of category theory is in providing a simplifying and high level set of abstractions that can serve to illuminate the structural essence of a problem domain. At first, I thought it was just abstract nonsense (and this is coming from someone who has a PhD in mathematics), but after playing around with it a bit, I've started to appreciate the power of the concepts.

The most interesting "application" of category theory that I've seen (as it relates to software engineering) is the connection between databases and category theory, e.g at https://johncarlosbaez.wordpress.com/2018/06/06/applied-cate.... In short, relational schemas are categories, and common data migration operations can very naturally can be described in the language of category theory (functors, pullbacks etc).


> The most interesting "application" of category theory that I've seen (as it relates to software engineering) is the connection between databases and category theory

So is this application productive? It's nice to be able to describe something that already exists in terms of category theory, and even nicer if those descriptions are concise and satisfying. But does that description enable anything new? Did we get any new migration operations, normal forms, etc?


Yes, for example the dual of join (called 'sigma'), which only exists for databases in categorical normal form. There are many academic papers and an open-source project ('categorical query language') here: http://www.categoricaldata.net.


Sounds interesting! I had a look, but couldn't find out what sigma does. This is not quite the same level as, say, the PostgreSQL documentation:

http://www.categoricaldata.net/help/instancesigma.html

Is there somewhere i can go for a worked example of using sigma?


Sure, here is an example that uses sigma to compute an equivalence relation:

http://cql.conexus.ai/quotient.php


FWIW, I think the best "applications" (if they can be called that) come from domains like algebraic topology and algebraic geometry, where some concepts come up so frequently that it's useful to formalize them in category theory. The homology proof of Brouwer's fixed point theorem [1] is one good example. Things like Eilenberg-Maclane spaces are another (really is most natural to think of them the thing that represents some functor).

I wouldn't say that you can't do this stuff without category theory, but it does make it easier / clearer. (Similarly, you can do a lot of geometry without coordinates, but coordinates definitely make some stuff easier / clearer.)

[1] https://www.wikiwand.com/en/Brouwer_fixed-point_theorem#/A_p... [2] https://www.wikiwand.com/en/Eilenberg%E2%80%93MacLane_space


Here's an example. It's not mentioned in the OP, but in a link in the OP. Microsoft's LINQ was designed using principles from category theory. They didn't use category terminology in the final product, and rightfully so.


> Gives three examples of bits of mathematics with really strong concrete uses.

The point, I think, is not that those fields of mathematics have obvious concrete applications to computers, but that they support each other in how they are applied to computer problems. Like, one reason numerical analysis is useful is that it helps you better solve differential equations, a common way to model a linear system. So linear algebra, of course, has these great applications in computers, but they're still pretty indirect because it's not like we program computers by feeding them linear maps (or whatever).


Yup, no applications provided. Only here would this title be clickbait, but here we are. I would suggest "Category theory may inspire results in other fields", but specific example of that is also not present.


Very interesting. Somewhat ironically, I think I would understand the article better with some examples of actual transformations/applications of category theory in original problem domains.


Category theory basically reshaped the language (and methodology, in some sense) of large swaths of modern mathematics. So it s applied more like the set theory, as a foundation. But it’s hard to explain to people not steeped in the subject.


Although, to play devil's advocate, you can prove results with set theory that you'd care about even if you weren't super interested in foundations, usually by playing with different cardinalities. E.g.:

Call a real number "algebraic" if it's a zero to some polynomial with rational coefficients. (e.g. \sqrt{2} is algebraic since it's a zero for x^2 - 2). Claim: There exist non-algebraic ("transcendental") numbers. Proof: There are only countably many polynomials, and so there are only countably many algebraic numbers, but there are uncountably many reals. Similarly, there are numbers that aren't Turning-computable. Etc.


If you write out your statements encoded in say ZFC no one would recognize what you are saying. Sometimes the concept of sets and set relationships fit our needs exactly. Other times we build more user friendly concepts on top of set theory like an API. Categorial constructions are also everywhere whether one recognizes them or not.


"But it’s hard to explain to people not steeped in the subject."

I don't agree. Actually it can be understood relatively easily, if it's explained well:

https://www.youtube.com/watch?v=ho7oagHeqNc

https://www.youtube.com/watch?v=L0aYcq1tqMo


I didn’t mean that category theory itself is hard to explain. I meant that its application to modern math (esp. non trivial ones) is hard to explain without bringing in sufficient math background.


"but it’s not often applied so directly"

I beg to differ. While quantum mechanics is linear algebra with a lot of tensor structure. The language of deep learning is linear algebra (plus non-linearities). Often in machine learning one use lin alg pretty much directly: linear regression, SVD, etc.


post-hoc




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: