Immutability (and the resulting maintainability and predictability) is really appealing to me, though. When I try it again, I think I'll focus on educating myself around the language upfront and not just learning as I go.
Everything else about the language, Phoenix, and the tooling was really nice.
For the same reasons as others have said, I would not pick Elixir for a business, though.
In other phrasing, I’ve quickly mastered the “draw three thin ovals” portion but am now stuck at “draw the rest of the phoenix”. Speaking of Phoenix, I also agree about “mix phx.gen” to be more magical than what I’m used to.
Scala isn't exactly an imperative language. If anything it's the actor model isn't exactly easy to wrap your head around
I was talking more about Java/Python. Also Scala has inheritance and OOP. Which don’t exist in elixir has only map.Map + additional field is struct in elixir.
Function capture, enumerations, pattern matching, implicit return and tuples returning status is what confuses new people.
Most try to implement some kind of inheritance in elixir.
Actor model is in OTP. Process, supervison, actor and messages are concepts of OTP. Elixir does not have actor in in its language constructs.
There is no replacement/alternative for OTP if you want distributed systems.
Many tried to reimplement Erlang in their languages and failed miserably.