I've been writing FOSS Haskell for 10 years, but also wrote Scala professionally for 4 years or so, and Haskell for 2. The Haskell ecosystem is wonderful for software development, and real practical Haskell can be written without much "wizardry" at all. Further, I have taught it to people who had no prior programming experience and they didn't have much trouble. Yet, Haskell still has issues with adoption, and many cite the learning curve. Four reasons why people fail to adopt a new thing in general:
- They're forced to use it (say at school or at work).
- Lack of support and learning resources.
- It's very different from what they're used to. Learning requires unlearning first.
- They're suspicious of it in general (say from reputation).
When it comes to Haskell, (1) is rare but I've heard of it, (2) has gotten much better in recent years, (3) cannot be helped, since the world has been writing imperative code for decades, and (4) can come out of (3) but is also worsened by Haskell's vocabulary of concepts (think
Monad, which nobody in the FP world actually has a problem with or confusion of).
To the question at hand: it is my experience so far that Rust has successfully integrated both the "battlefield" lessons learned from the software development world (memory safety, performance, project management) and the conceptual/theoretical lessons that the FP communities figured out (chained errors, ADTs, pattern matching, traits and their autoderivation, etc.). As an analogy: humans have been building bridges for a long time, but we wouldn't dare build one today without applying solid engineering principles that carry with them scary words like "eigenvalue". And there would have been some awkward transition period between the "ad hoc + experience" approach to the principled approach. I think that the software world is in a transition period of its own, and Rust is precisely a language built to fill the role of "principled programming language".
But lifetimes are hard! This is all so tedious. I'm going to go write software in FooLang, I've never had a problem with it before.
Okay, and that's your freedom to do so. But don't be surprised when you drown in bugs and complexity and your bridge falls over. I want to port Aura to Rust because I don't want my own bridge to collapse. New projects for me will continue to be in Rust.