Oh, Haskell qualifies, it's just not in wide(ish) use yet. Also, I don't know whether it supports mutable concurrent constructs (as Clojure does with refs and STM). Without those you don't have concurrent writes.
As for Go, it allows sharing of mutable state, and so does not prevent races and does not make it clear when modifications to said mutable state are visible. It supports concurrency well but is not built around it.
Haskell has marvelous concurrent constructs. It's actually one of the few places where I end up thinking "wow, I'm glad I get to use threads here" and I'm not thinking it sarcastically.
Native code is just too expensive to write/maintain and is not justified unless you need the extra constant factor performance it gives you, which is quite unrelated to scalability.
In this case, at least, industry seems to be doing it right. C++ is reserved for the industries that really need it (gaming, embedded) and enterprise work focuses more on programmer productivity instead.
Haskell is completely managed, its not very native at all. They have a garbage collector right? Since everyone is compiling to native instructions these days, GC (and the memory safety required for it) is about the main difference.
At the end of the day, each one of your VMs are running on hardware, the point about Clojure being JVM-friendly is more about ecosystem and interop then some efficient execution concerns. You could say Haskell is interoperable with everything and nothing, and be right on both counts.
Yes, that is certainly the theory. Have you seen that actually happen in practice? Java shops almost exclusively continue to use java, and refuse to allow the dozens of other jvm languages. Every measure I can find shows haskell is more widely used than either clojure or erlang.
How does being a "professional practictioner of all 3" qualify one to make that assertion? And how do you reconcile that with the fact that every objective measure available shows otherwise?
The qualification is admittedly subjective but Haskell is not as practical for use in many use cases, whereas Erlang fits a niche very well, and the others (scala, clojure) are more general purpose. My assertion is based on what I know all my peers in the industry to be working on, and the sizes of the projects they are working on. If you have more data than this empirical data set, I'm all ears.
Edit, I see you reference tiobe and langpop.
This is a horrible* way of assessing industry usage, just fyi. Niche languages for example, may see relatively small general usage, but may be the de facto answer to a particularly type of problem. Many people use Erlang to solve their concurrency problems. Few use haskell (although that part is improving and I love haskell a lot).
>but Haskell is not as practical for use in many use cases
Except that is entirely nonsense. Your misconceptions about the languages in question do not imply a particular amount of usage from other people.
>the others (scala, clojure) are more general purpose
I can't even imagine how one could make such an absurd statement. All that demonstrates is that you have not actually used haskell as you claim, or you only used it 20 years ago.
> My assertion is based on what I know all my peers in the industry to be working on
Which is ridiculous, just like claiming haskell is more widely used than C by only looking at the financial industry.
>This is a horrible* way of assessing industry usage,
It is a poor way, but it is infinitely superior to the "cause I said so" method you are employing. Erlang and haskell rate close together in all of them, so it certainly makes no sense to pretend one is more widely used than the other. Clojure rates miles behind both, and it is equally absurd to pretend it is so far behind in every measure but is actually ahead based on nothing.
Oh really? Haskell is not suitable for practical use? Try getting any software firm to adopt it and explain to them how I/O works with monads and about applicative functors. You will be met with resistance every step of the way.
I love Haskell and use it nearly every day to do mathematics and a number of side projects. Please step off your high horse and throwing all this ad hominem around. You're giving haskellers a bad name everywhere.
As for Go, it allows sharing of mutable state, and so does not prevent races and does not make it clear when modifications to said mutable state are visible. It supports concurrency well but is not built around it.