This page may be out of date. Submit any pending changes before refreshing this page.
Hide this message.
Quora uses cookies to improve your experience. Read more
Irene Knapp
Speaking as a long-term user of Haskell, I do note that it occupies several high-concept niches at once.

Beginners coming from dynamically-typed imperative languages must simultaneously understand algebraic datatypes, typeclasses, the lack of Smalltalk-style object orientation, static typechecking, pure functions, higher-order functions, recursion as a complete replacement for iteration, and updating of immutable data structures.  Oh, and the syntax is like very little else, with the indentation significance having lots of corner cases that I'm not aware of any tutorial on.

Having mastered these things, intermediate Haskellers will discover that performance characteristics are very difficult to get clear explanations of.

All of this with everyone who advocates for the language pushing monads as the reason to even learn the language at all, so that no amount of advice to "leave that abstract concept for later; it's of limited importance" will be the slightest deterrent.

And the error messages are unhelpful to the point of absurdity.  Coders who aren't comfortable asking for help are never going to learn the difference between a type error caused by a missing comma, and an identically-reported type error caused by an extra parameter!

I like the language a lot; it was my first choice for nearly any task, for a period of eight years, and I've even been paid to work in it, which is fairly rare and was a great experience.  But if I'm trying to help a friend advance her expertise as a programmer in general, I will generally suggest a language which has a real, static typesystem, but leaves out most of the other hurdles.  Lately, Rust seems to be this, although I have very limited familiarity with it myself.

About the Author

Lived in California
146.9k answer views2k this month