Earlier quoted context omitted.
> Scala is the worst of the category of "functional looking languages built on the top of an imperative ecosystem". Could you elaborate? Because that's not been my experience at all. I have found Scala to provide many tools to wrap around the idiosyncrasies of the underlying imperative that they are barely noticeable anymore.
I found F# really good at with this -> "wrap around the idiosyncrasies of the underlying imperative". In the video Paul Phillips elaborates on many subject much better than I could ever do. I also found the .net ecosystem libraries better, even though there are fewer libraries available. Some links that I found great on the subject: https://www.reddit.com/r/scala/comments/4246qc/heres_why_sca... https://techblog.bozh…
SBT is awful, don't use it.
"Minor versions" is overstating things - 2.11 was released in 2014, 2.12 was released in 2016, 2.13 in 2019, and 3.0 onwards are backwards compatible with 2.11. So that's one compatibility break every 2-3 years, which is better than most languages.
Scala is the only vaguely mainstream language I've found where you can do a whole enterprise-scale project in the language itself - no reflection, no AOP, no decorators, no macros, no monkeypatching, no nothing. So until I find another language where I can do custom context-like types (e.g. a type to represent "this must happen in a database transaction", and libraries already offer me functions like "take this list of database actions and combine them into a single database action" that work with my custom type) and "walk the object graph" style tasks (e.g. JSON serialization) in plain old type-safe code, I'm sticking with Scala.