So let's talk about monads.
When looking into monads, you will either find obtuse theory, Haskell code, or nonsense analogies(i think i'll have a burrito for lunch tomorrow). These explanations all have the same problem: Intentional or not, they presume the reader basically already knows what a monad is. That's great for people who've been initiated into functional programming and need a refresher, but does little for anyone else. Someone from an imperative background is going to look at this stuff, see more stuff they don't have the context to understand, and walk away frustrated. This is strange because every imperative programmer can easily understand the option/maybe types that have been imported into imperative languages. Of course they can! There are barely any moving parts.
Thus if you want to explain monads to an imperative programmer, you need to implement monads in an imperative language, and you need to talk about them in imperative terms. The concepts aren't difficult, but the language barrier is enormous. Maybe calling monads wrappers isn't 100% technically accurate for reasons that matter a lot to you, but I guarantee those reasons won't matter spit to someone if you can't get them over that initial hurdle. When explaining square roots to a child, you elide imaginary numbers until the child is comfortable with the basic idea.
If you want your ideas to be heard by others, then you must swallow your pride and adapt to the audience you want to reach. If you won't speak Imperative, then why should we learn to speak Functional? You cannot bridge the gap with arrogance.
I'm sorry if I've offended anyone, but I've been around this mess for years, and it isn't getting any better. If you're offended, then maybe you're the person who most needs to hear what I have to say.
Posted Jul 14, 2021, 6:13 AM UTC
Is this a subreddit or a selfhelp group?
I consider this an intervention.
Fwiw, I consider it a successful one, despite the votes, and thank you for it. :)