So, that's not entirely it, though thank you for the opportunity of introspection.
The reason I say "wanky" is that there doesn't seem to be in the popular rhetoric a clear practical reason for their existence beyond "we need this language".
C? "Writing assembly sucks". C++? "Writing C for large project sucks". Java/D/C#? "Oh god C++ is worse than we thought". PHP? "We need to write web servers". Perl? "We need to munge strings". Ruby? "We need to be happy, and long-term exposure to Perl prevents that". COBOL? "We need to write a lot of business software". VB? "We need to write a lot of business software, and are on the MS stack". Fortran? "We need to write a lot of numerical code, and it has to be fast". Erlang? "We need to write distributed, fault-tolerant systems and all we have is C and Prolog". Elixir? "Erlang is awesome but hurts our eyes". APL? "We don't have computers yet, but we still need to write about them". Lisp? "We also don't have computers yet, but we could maybe implement our way there". Ada? "Wow, we can't trust C programs for anything". R? "We need to do statistics". Lua? "We need to be easily embeddable, and Brazillian." The same can be said about Smalltalk, SQL, Javascript, Eiffel, and many other languages. Even academic languages and systems (Scheme, ML, Coq, Simula, Io) were exploring something in particular.
Hell, at least Elm had the clear objective "We want to be Haskell, but in the browser".
Haskell? Haskell seems to be mainly "man, we should define a standard compilable functional language". Its syntax is nothing special if you've been exposed to other ML-descended languages (OCaml, F#), or a language (say, Erlang) which allows pattern-matching. Its a compilable, statically-typed, lazily-evaluated functional language with immutable data...which is not super interesting if you've seen or dealt with other languages.
The bigger problem I have, honestly, is one of branding. The Scheme folks never pretend that theirs is a language that will save programming, merely an exercise in purity and peacefulness like a sort of digital taoism. C programmers, on the whole, never pretend that their language is anything more than the moral equivalent of moving a mountain with only a spoon and stern frown. Java and C# programmers don't seem to claim to be anything more than a sort of Stalinist human wave tackling the problems of enterprise. Even the Rubyists and Javascript programmers have a sort of cheerful guilty pleasure that they get paid as much as they do to have fun with computers and the Internet--and they never claim to be some sort of evolutionary step in computing.
Haskell programmers, though? Haskell folks? Every one of them that I've chatted with seems to be cut from basically the same sort of cloth: quite smart, rather academic, and pretty much useless for any sort of real production programming. Theirs does not appear to be a culture well-suited to product development, to software engineering, to simple explanation or acceptance that most products and business needs are best met with tools of expediency instead of beauty or purity.
Indeed, as outlined above, I find many Haskell people seem to be using a tool few care about to solve problems nobody has in ways that have been solved before, all the while viewing themselves as intellectually superior to the lesser "blub" programmers who are, you know, getting paid, and working on projects way more interesting than whatever the Haskell folks are posting on /g/ about.
Haskell predates all of Erlang, OCaml, and F# by a pretty large margin (by about a decade! [EDIT: for OCaml and F#; see child comment]) and uniquely among most of the languages mentioned is a lazy statically-typed functional language. There is a large qualitative difference between optional laziness and laziness-by-default. Haskell was originally intended as a teaching language, and in particular as a less-license-encumbered version of the language Miranda, which was a popular teaching language at the time. So the original reason the language needed to exist was, "We want a lazy, statically-typed language for research and teaching uses."
Is there a different rationale now? Well, there still aren't many lazy-by-default languages, and Haskell is a good way of showing that there are some big advantages as well as some big disadvantages to that approach. One consequence of laziness is a really hardcore commitment to functional programming—where OCaml can cheat and have implicitly stateful functions, Haskell has to use alternatives like monads or effect systems—which means that Haskell is a fascinating language for exploring and developing new programming concepts in the functional space. So maybe Haskell's one-line selling point is, "We need to deeply understand functional programming and the idioms it affords us." I personally think this is a worthwhile endeavour regardless of how much it pays.
Thank you for the (somewhat incorrect) history lesson, especially the bit about Miranda as a forerunner to Haskell.
The rest of my comments still stand--especially the bit about "functional programming for its own sake", which is exactly what I consider "wanky" in a language whose propagandists are unwilling to promote as merely being of academic interest.
So I've interacted with many of the leading Haskell people (SPJ, Wadler, among others) and I never really got that feeling from them. They were just super smart people with different fascinating ways of thinking (from my perspective). They never came off as very smug, in fact, they weren't really that interested in what you thought about Haskell; they were too busy using it to solve problems. I think in that way, Haskell continues to be the language that defies success, at least in the way that many would define it (mass adoption - Haskell seems to be super successful to those people, and I don't think I would disagree with them).
Haskell programmers do seem to work on more elegant solutions to problems that are easily solved less purely. This is not a useless activity, it can help in understanding those problems more deeply, but it is hard for an outsider to appreciate. I know I will never be a Haskeller, simply because I am interested in different problems.
Comments
So, that's not entirely it, though thank you for the opportunity of introspection.
The reason I say "wanky" is that there doesn't seem to be in the popular rhetoric a clear practical reason for their existence beyond "we need this language".
C? "Writing assembly sucks". C++? "Writing C for large project sucks". Java/D/C#? "Oh god C++ is worse than we thought". PHP? "We need to write web servers". Perl? "We need to munge strings". Ruby? "We need to be happy, and long-term exposure to Perl prevents that". COBOL? "We need to write a lot of business software". VB? "We need to write a lot of business software, and are on the MS stack". Fortran? "We need to write a lot of numerical code, and it has to be fast". Erlang? "We need to write distributed, fault-tolerant systems and all we have is C and Prolog". Elixir? "Erlang is awesome but hurts our eyes". APL? "We don't have computers yet, but we still need to write about them". Lisp? "We also don't have computers yet, but we could maybe implement our way there". Ada? "Wow, we can't trust C programs for anything". R? "We need to do statistics". Lua? "We need to be easily embeddable, and Brazillian." The same can be said about Smalltalk, SQL, Javascript, Eiffel, and many other languages. Even academic languages and systems (Scheme, ML, Coq, Simula, Io) were exploring something in particular.
Hell, at least Elm had the clear objective "We want to be Haskell, but in the browser".
Haskell? Haskell seems to be mainly "man, we should define a standard compilable functional language". Its syntax is nothing special if you've been exposed to other ML-descended languages (OCaml, F#), or a language (say, Erlang) which allows pattern-matching. Its a compilable, statically-typed, lazily-evaluated functional language with immutable data...which is not super interesting if you've seen or dealt with other languages.
The bigger problem I have, honestly, is one of branding. The Scheme folks never pretend that theirs is a language that will save programming, merely an exercise in purity and peacefulness like a sort of digital taoism. C programmers, on the whole, never pretend that their language is anything more than the moral equivalent of moving a mountain with only a spoon and stern frown. Java and C# programmers don't seem to claim to be anything more than a sort of Stalinist human wave tackling the problems of enterprise. Even the Rubyists and Javascript programmers have a sort of cheerful guilty pleasure that they get paid as much as they do to have fun with computers and the Internet--and they never claim to be some sort of evolutionary step in computing.
Haskell programmers, though? Haskell folks? Every one of them that I've chatted with seems to be cut from basically the same sort of cloth: quite smart, rather academic, and pretty much useless for any sort of real production programming. Theirs does not appear to be a culture well-suited to product development, to software engineering, to simple explanation or acceptance that most products and business needs are best met with tools of expediency instead of beauty or purity.
Indeed, as outlined above, I find many Haskell people seem to be using a tool few care about to solve problems nobody has in ways that have been solved before, all the while viewing themselves as intellectually superior to the lesser "blub" programmers who are, you know, getting paid, and working on projects way more interesting than whatever the Haskell folks are posting on /g/ about.
Haskell predates all of Erlang, OCaml, and F# by a pretty large margin (by about a decade! [EDIT: for OCaml and F#; see child comment]) and uniquely among most of the languages mentioned is a lazy statically-typed functional language. There is a large qualitative difference between optional laziness and laziness-by-default. Haskell was originally intended as a teaching language, and in particular as a less-license-encumbered version of the language Miranda, which was a popular teaching language at the time. So the original reason the language needed to exist was, "We want a lazy, statically-typed language for research and teaching uses."
Is there a different rationale now? Well, there still aren't many lazy-by-default languages, and Haskell is a good way of showing that there are some big advantages as well as some big disadvantages to that approach. One consequence of laziness is a really hardcore commitment to functional programming—where OCaml can cheat and have implicitly stateful functions, Haskell has to use alternatives like monads or effect systems—which means that Haskell is a fascinating language for exploring and developing new programming concepts in the functional space. So maybe Haskell's one-line selling point is, "We need to deeply understand functional programming and the idioms it affords us." I personally think this is a worthwhile endeavour regardless of how much it pays.
Thank you for the (somewhat incorrect) history lesson, especially the bit about Miranda as a forerunner to Haskell.
The rest of my comments still stand--especially the bit about "functional programming for its own sake", which is exactly what I consider "wanky" in a language whose propagandists are unwilling to promote as merely being of academic interest.
Haskell is 1990, Erlang is 1986, OCaml is 1996, F# is 2005. So it really only predates F# by more than a decade.
So I've interacted with many of the leading Haskell people (SPJ, Wadler, among others) and I never really got that feeling from them. They were just super smart people with different fascinating ways of thinking (from my perspective). They never came off as very smug, in fact, they weren't really that interested in what you thought about Haskell; they were too busy using it to solve problems. I think in that way, Haskell continues to be the language that defies success, at least in the way that many would define it (mass adoption - Haskell seems to be super successful to those people, and I don't think I would disagree with them).
Haskell programmers do seem to work on more elegant solutions to problems that are easily solved less purely. This is not a useless activity, it can help in understanding those problems more deeply, but it is hard for an outsider to appreciate. I know I will never be a Haskeller, simply because I am interested in different problems.
Haskell: ""We want a non-proprietary Miranda".