So, essentially the Haskell compiler allows you to say "don't worry I've got this, it'll be fine -- it's pure and semantically correct, I promise!" because the developers of the compiler know that they can't think of everything and want you to be able to do some really nasty hacks if you have to do so. It's easy to check up that the authors of the libraries you're using aren't using these escape hatches.<p>Of course, if they or you are using these escape hatches, and it's not correct -- and it blows up -- you've only yourself to blame for subverting the compiler.
This is the reason Safe Haskell exists<p><a href="https://downloads.haskell.org/~ghc/7.8.4/docs/html/users_guide/safe-haskell.html" rel="nofollow">https://downloads.haskell.org/~ghc/7.8.4/docs/html/users_gui...</a>
Author calls the unsafe version x7 slower, yet such imperative, impure code wins Haskell benchmarks
Perhaps he didn't optimize it well?
<a href="https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/haskell.html" rel="nofollow">https://benchmarksgame-team.pages.debian.net/benchmarksgame/...</a>
Haskell is my guilty pleasure language. I have no idea what I personally would ever use it for, but I admire it so much that learning it is higher up on my bucket list than many other (arguably more useful) things.