Functional programming and Group Theory
Hopefully what you write about side effect in programming is not so much related to Category Theory. Anyway I strongly disagree with this “modern fashion” trend which sees side effects as evil. They usually are the goal itself of a program and abstracting from them can be a waste of time in some cases. There situation where OOP is a quick winner and being a FP fanatic does not help to correctly gauge things.
Aside from this,I wanted to ask about the table of contents. Is Category Theory helpful to learn Quantum Field Theory? Some posts saying it may help to study Group Theory (which is a basic piece of the Standard Model, I’d say):
Generally speaking, what’s your opinion about Category Theory (and information technology structures) for physics?
Extended TQFTs can be described using either 2-categories or double categories.
You might think of this function as taking “nothing”
Yes, sure, it is completely unintuitive why a dummy element is defined. Void, or better a null set, seems much more appropriate than “unit”.
Is there a more convincing explanation?
Monoid as single object category
Now I want you to forget that you are dealing with the set of natural numbers and just think of it as a single object
That’s very strange: why should I think that the set of natural number is a single object?
Sorry but it is all simple, clear and full of examples about programming (and opinions about what code is clean, maintainable and easy readable) until suddenly – when it comes to the crucial definition of a categorical monoid – you just ask to consider the natural set as a single object? Am I missing something else which is supposed to introduce this idea more gently and softly?
Thank you for your great work and effort!
Found a possible answer here.
Void versus unit
We’ve also established that there is one and only one pure function from any type to the unit type
But then there is also the symmetric function from unit to any type.
I guess the above would fit also Haskell, but anyway I’m a developer and for sure that’s true for many useful programming languages.
And again, as per my previous comments (inspired by physics, relativity and real world programming) it looks looks like unit (or void) could be both the initial and terminal object of the same category, not even needed to pick one of them from the dual category. Is there a real example (from physics or programming) where it makes sense to distinguish between void as initial and unit as terminal object?