Haskell was created on the idea that: hmm, what if we absolutely tie our arms behind our own backs when we are about to write computer programs.
Will necessity cause us to invent other useful tools and abstractions?
Will the restrictions enable compiler optimizations beyond our wildest dreams?
Turns out yes and yes. Much fantastic. Some of the combinators, like parsec for example, have been really awesome. And the amazing compiler optimizations bring the speed up almost to the level of a real language.♥︎
Now we can undo the ropes and use those tools and abstractions with normal languages. We’ll be like martial arts practitioners shedding weighted clothes. Side effects.♥︎ We’ll be like Flatland residents discovering a cube. It’s like being able to create a wormhole through space & time.♥︎
Haskell peeps, don’t use Maybe/Just as a selling point of your language. Dyn typed languages don’t need Maybe/Just. It’s not as if we are excited to go wrap our stuff just so absolute basics like
(if (even? x) x #f)
can work.
I’m sure Haskell is awesome. Auto currying, pattern matching, lazy eval. Lots to love there. It’s just that Haskell peeps always seem to try to phrase the drawbacks as if they were selling points.
To everyone else, it’s less “wow, they can use monads to do stuff” and more “wow, they need monads to do stuff”.
I found the secret to reading Haskell code: grep -v ::
As in, ignore the typesigs. Uh, that helps me as a
not-overly-deep-into-Haskell outsider, at least. Probably more
semantically meaningful to those who have taken the blood oath.