Thanks, I appreciate the further explanation. However, I take issue with you telling me "if you really want to level up as a programmer then you need to start thinking more abstractly." I don't think it's very appropriate to tell someone what they need to do to "level up" as a programmer, when you have no idea of their abilities as a programmer (and even if you do, it comes off as arrogant). Perhaps a better way to phrase it would be "I've found that thinking more abstractly really lets one level up as a programmer"?
No problem. Thanks for the apology. I will take the opportunity to learn more about equational reasoning in Haskell. I'm currently going through TAPL and Software Foundations, so my theoretical focus in Haskell is more on type theory and less on category theory, although that's long been on my "to-learn" list. If that makes sense :)
That makes total sense. Also, type theory is a very fascinating research area, too, especially with the advent of homotopy type theory and practical implementations of dependent types like Idris.