As someone interested in functional programming, but works almost entirely in imperative languages, is category theory worth learning?

Function programming heavily impacted how I write imperative code. Would I have similar revelations with category theory – maybe write better abstractions?

> is category theory worth learning?

Yes. Very much so. Especially if you're programming functionally. It will explain why all this is the way it is. Why sum types and product types are what they are, the big picture on functors, monads, etc, etc.

I like Bartosz Milewski's introduction [1][2] where he states (paraphrasing) that he started programming back in the day with assembly, and as programs got more difficult we needed higher level abstractions, so he moved to procedural languages, and then after that another higher abstraction was OO, but he realised that OO has a fundamental problem: objects don't compose, and so he found himself functional programming with Haskell... each time looking for better abstractions.

Category Theory is the ultimate abstraction and although you can't write code with it, you can step outside of the detail of complex solutions and think about the bigger picture and then use that bigger picture to help you build your detail. And that's why I think it's valuable.

I particularly like his journey too, as it exactly reflects my own.

[1] Category Theory for Programmers - https://github.com/hmemcpy/milewski-ctfp-pdf

[2] https://www.youtube.com/user/DrBartosz/playlists