I have no functional experience apart from dealing with similar, toned down concepts in JavaScript.
I was considering Clojure or Elixir depending on tooling, ecosystem, market worth and most importantly, what can it teach me.
The reason I got inclined to Elixir was to learn Phoenix/LiveView. The reason for Clojure was it's very much adored here and it seems a good starting language for FP.
Rust is in my list but maybe sometime later this year.
Maybe a slightly unconventional answer, but F# is quite nice.
As a language, the syntax is pragmatic and approachable like Ruby, but the VM scales super well since it's Actor model provides concurrency by default.
There are even projects working to enable GPU-accelerated numerical computations (Elixir Nx) and Jupiter Notebook style collaboration and code sharing.
If you're primary goal is to learn something fun that's also great for getting actual work done, you'll probably really like Elixir.
My recommended introduction would be installing it, and running through their official guide from the top:
Key points:
- Most respondents are junior-mid developers.
- Clojure was written by an experienced developer (Rich Hickey) and is adopted mostly by experienced developers.
- Clojure is not beginner-friendly, however it is extremely pragmatical.
- The appreciation of pragmatism over perfectionism is an acquired taste, which takes time and experience to develop.
- It is remarkable how the love for Clojure came out despite its user base being so under-represented.
https://jessewarden.com/2021/01/in-search-of-the-best-functi...
F# in particular because of the established ecosystem and possibility to fall back to OOP if you need it, since it is multi-paradigm.
«JavaScript to ReScript» where he evaluates a lot of FP languages: https://youtu.be/dFHj1d9FG8M
NB: He’s all about static types though.
I'm just recommending Rust in general, not over Elixir, because I've never used Elixir and have no experience in that area. Rust is a pretty easy language to love.
I decided to go with Elixir because it seems fun (I have no Functional experience). However, I am seriously considering Rust, because it seems so universally loved.
Maybe the grass is greener on the other side?
I will definitely pick up Rust when I feel I am comfortable enough with Elixir.
I primarily want to work with Distributed Systems, but It seems the best 'setup' is Elixir for Distribution logic and Rust for leaf-nodes-number-crunching logic.