Because everything can do IO and launch missiles there :) And there's no way to limit it (except maybe algebraic effects introduced recently? I'm pretty sure nobody uses them anyway)
> The people who like Haskell think differently from the people who like C.
I'm familiar with numerous people who _like_ C and there's one thing that stands out about them is they don't think in abstractions, effectively ruining the whole point of abstraction as a concept. You offer them, say, an STM¹, and they are like "oh, right, a semaphore here, a mutex there, that's an easy one" and so on.
> The problem comes when the Haskell types (pun intended) think that everyone else just needs to use/study Haskell more, and then they'll have their enlightenment moment.
I'm a Haskell type and ex-C type, and I don't think it is correct. To get Haskell, you have to step back and unlearn some of your knowledge about computers, no matter how hard you've acquired it. The problem with the abstractions offered by p^Wmainstream programming languages, is they leak, one way or another, so you inevitably end up not trusting any abstraction ever at all. In Haskell, abstractions are more reliable (dare I say rock-solid?), compared to mainstream, thanks to effects isolation, referential transparency, laziness and other merits and properties of the language.
Another mistake I did when starting Haskell was I expected the same words to mean the same things, `class` in particular. That cost me months of struggling to understand why it didn't work.
The bottom line is Haskell is significantly different from anything mainstream you've programmed in before and expecting it to work the same way is, uh, not very efficient.
Me from 2013 when I've left PHP for Ruby would definitely be in awe. Today, not using Ruby for 5 years now, it's "meh". With the utmost respect to the effort of everyone involved.
reply