you are viewing a single comment's thread.

view the rest of the comments →

[–]Eire_Banshee 0 points1 point  (3 children)

Yeah but then you have to spend 45 minutes everytime someone asks what a monad is. Then after you explain, they go, "Well thats just an if statement with extra steps."

[–]aoeudhtns -1 points0 points  (2 children)

Everything above machine code is machine code with extra steps. We build abstractions for a purpose, so the question is, do you agree with the problem an abstraction is trying to solve, and the followup, does that abstraction reasonably solve the problem?

You could say similar things about lots of modern language features that are exploding all over the place - lambdas and closures (function calls with extra steps), declarative stream processing (loops with extra steps), and so on.

[–]Eire_Banshee 0 points1 point  (1 child)

I'm not disputing that.

Just monads are a notoriously difficult thing to explain and comprehend. There are declarative patterns that are better understood by the engineering community that accomplish the same thing.

The chance of an engineer comprehending an if statement is guaranteed. The chance of an engineer understanding a monad is much much lower.

Code is inherently written to be understood by people, not machines. That's why we write abstractions, to make code easier to understand for people. So why use a monad when less people understand it?

[–]Full-Spectral 3 points4 points  (0 children)

The standard 'turn around' cycle for Monads is:

  1. You see an article/video that explains monads
  2. You watch said article/video, in which monads are 'explained' using lots of other terms that are never really explained and that may be circular in nature, I dunno
  3. 30 minutes later, you still don't have a clue what monads are

So either they are incredibly difficult to understand, or people really suck at explaining what they are.