4 ms·
What's insane about monads :-)?
by the-smug-one 3y ago
What's insane about monads :-)?
- javcasas 3y agoHe doesn't understand them, therefore monads are insane.
- TylerE 3y agoI understand them just fine. The juice ain’t worth the squeeze, and I don’t appreciate the personal insult
- master-lincoln 3y agoI could not see any insults in this thread
- tome 3y agoAlthough I disagree with TylerE about the issue that started this thread, I agree that assuming that someone doesn't understand something is generally considered rude and would advise people against that. I would doubly advise them against it if they are from the Haskell community, because it is one way our community could get a poor reputation. Instead I hope we can be welcoming and tolerant, even of people who may not understand things, in the hope that they will come to understand them through interacting with us, or at the very least enjoy the experience.
- master-lincoln 3y ago> I agree that assuming that someone doesn't understand something is generally considered rude. I think assuming that someone doesn't understand something is only rude if there are no indicators for a misunderstanding. javcasas seemed to assume that TylerE doesn't understand Monads because TylerE stated that there is a Monad insanity in Haskell to replicate a print statement. I would also assume javcasas' comment wasn't made in good faith, but I still don't see that an insult was voiced. Not every rudeness can be interpreted as an insult I think
- tome 3y agoI think you're splitting hairs! Equivocation about what's rude and what's not is not a good look for the Haskell community.
- javcasas 3y agoYou understand the data structure. Probably the chaining rule, even probably the monoid in the category of endofunctors. What you don't understand is the existence of it. Monads is a solution for dealing with IO in a strongly typed programming language, where we want all functions to be pure, and we don't have access to linear types. (almost) Every other programming language, when it had the chance at doing this, just threw the towel without a fight, and decided to allow IO everywhere. Haskell decided to stick to its principles instead, and produced something different, guided by a different set of constraints. Different means with different tradeoffs in different places. If Haskell instead decided to allow mutability everywhere, like most programming languages, we wouldn't be talking about it. Because it would be another language with weird syntax, and you can find a lot of them in the list of defunct programming languages at wikipedia. And the juice is worth the squeeze if you want to see breakthrough things in programming, and not just another Algol with updated syntax. For reference, other samples of groundbreaking (to some degree) stuff: * Rust: mutability only when the borrow checker allows it * Coroutines/continuations: functions that depart away from the entry/exit model * Prolog: a programming language constructed around functions with 4 connection points: enter/exit/fail/redo