4 ms·
Thousands of blog posts later, I don't think the following has changed: * Explaining these concepts in the abstract results in bafflement as to why anyone woul
by wrs 11y ago
Thousands of blog posts later, I don't think the following has changed:
* Explaining these concepts in the abstract results in bafflement as to why anyone would care about these useless abstract concepts.
* Explaining only the concrete instances of these concepts results in missing the point that they are all instances of the same concepts (and that you can write reusable code at that level, which can be a big productivity improvement).
* The only way to understand both at once is to sit down and read/write a bunch of code until you understand both levels. And once you pass that point you get it, but then you hit the above two roadblocks trying to find a shortcut to explain the concepts to someone else.
It reminds me of music theory, where you can bombard someone with all sorts of concepts like scales, modes, chords, etc., but it's all nonsense until they actually play music for a while--then most of it is both understandable and useful.
- _halgari 11y agoExcept some of us understand these concepts, see how they can be used, but yet don't understand why we would ever use them. In all these sort of articles I've never seen something that can't be done simpler with a bit of mutability sprinkled here and there. Sure having something 100% pure is great, but I don't know if I want that if it requires a 10x increase in complexity.
- runT1ME 11y agomutability increases complexity by 10x. Higher kinded types do not, they're unfamiliar and a bit weird at fist, but end up simplifying things. Abstractions make code easer to reason about (Go read about parametricity! really!). Mutability doesn't even help you from a superficial level for some things. Sure, if you're shoehorning a state monad somewhere, a locally scoped variable might look easier. However, try to fix 'Futures' without monads? It's much much less elegant.
- wrs 11y agoPresumably you are no longer in the audience for these blog posts. My impression is the number of people like yourself who understand the concepts completely and decide not to use them is vastly outweighed by the number of people who don't understand the concepts, or think they do because they've read a blog post, but because they have no practical experience actually don't.