Failing in Haskell
I&#x27;ve written small stuff in Haskell a decade ago. I have a soft spot for the language -- it has clearly influenced many notable languages that came after it. But I also admire the patience of anyone who actually manages to use it in practice, there are so many little papercuts that don&#x27;t get resolved, basically for a decade or more. If I&#x27;m cynical, I&#x27;d say that&#x27;s because little practical stuff is often not worth publishing papers about.<p>Error handling was, for me, a big one. For a functional language, Haskell seems very obsessed with exceptions. Even supposedly pure stuff, like &quot;head&quot; (first element of a list) throws an exception if the list is empty. You&#x27;d think Haskell would be the first language to have it return a Maybe value, but no. (Rust, BTW, gets functions like this right; they all return an Option.)<p>This reliance on exceptions clashes hard with the functional paradigm. Exceptions are &quot;magic&quot;: They are special additional values that any type can have (so an Int can either be an actual integer or an exception value), but you can&#x27;t test for them or handle them in any way pure code, you need IO for that. Which the language makes intentionally hard to use, that&#x27;s Haskell&#x27;s entire thing.