Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Spark is used in the examples, but these points carry over to other libs. Take cats for example. If you look at the cats README (https://github.com/typelevel/cats) there is this caveat: Cats relies on improved type inference via the fix for SI-2712, which is not enabled by default. For Scala 2.11.9+ or 2.12 you should add the following to your build.sbt: scalacOptions += "-Ypartial-unification"
More cats specific stuff here: https://github.com/sbt/sbt/releases/tag/v1.5.0-RC2
Any given library might or might not be. Most Scala libraries use semantic versioning and are binary backward-compatible across minor versions, but certainly not all In this respect, Scala is not significantly different from other languages.
I could see this argument made with Clojure, but I don't really see what makes Scala significantly better at FP than Kotlin. Kotlin has an official persistent data structures library nowadays, and it's got lambdas and higher order functions.
I haven't tried Spark from Kotlin, but it's a nice experience working with it in Clojure, and I have yet to see a language more expressive than Clojure. :)