I think the language and ecosystem are fairly general-purpose but there are definitely a lot more general ecosystems. I think some of the big wins both Erlang and Rails have achieved (that Elixir build off of) have been about constraining the problem to be "a service" or "a web app with a database".
So you are spot on there.
One of the things I've found Elixir to be surprisingly nice for is as a replacement to my Python and Bash scripting. Shelling out is occasionally awkward but Mix.install is glorious and Task.async_stream is hilarious.
Not to suggest that those don't exist or anything, just that there are so many dimensions available there that knowing more about which dimensions you'd most value having reach in might be enlightening. :)
Like: Video games? Desktop apps? Mobile apps? Embedded? Systems-level programming like OS or hardware drivers? Or one of a thousand other directions I can't think of just off the top of my head?
I work with Elixir for 9 years now (& love it) and I agree what you describe is not a good fit for it.
Elixir is a general-purpose language in the meaning of Turing-completeness. I never once felt tempted to write a CLI tool with it though.
Despite something being a general purpose programming language there are some tasks it may be better at than others. Visual Basic is a general purpose programming language but really you would most often use it for a particular subset of purposes. Elixir it seems is not good for writing a CLI.
And again, as a guy who loves Elixir, it absolutely is not suited for writing CLI tools. Many would say it can be easily done, the community even has a few really good libraries for it as well, but the BEAM VM startup time absolutely kills its utility for tooling for me.
And, as others also said, Erlang / Elixir simply excel at orchestrating a lot of runtime micro-agents, each with their own small responsibility. And they do this better than any other language I've seen. But, for one-offs / scripts / CLI tools, Golang / Rust are very difficult to dethrone. We could also add Zig / D / V and others, I suppose, but I am not familiar with them.
[rant]
What irked me many times: people around here idolizing a certain PL they learned as kids and giving it much more credit than it ever deserved.
[/rant]
I completely understand the almost PTSD levels of reactions when people say "you actually can do ${obviously_difficult_thing} in ${obviusly_niche_language}!". I have the same reactions towards these statements myself.
I mean sure, if you're a good enough physicist you probably can make a lounge chair out of toothpicks, toilet paper tubes, rubberbands and glue. Doesn't mean that it's sustainable or viable to do so for everyone else. It's just your hobby; go wild and have fun! Don't pretend that's how lounge chairs should be mass-produced, however.
Same goes for PLs.
A lot of PLs should have remained niche curiosities and research ideas -- and nothing beyond that. Sadly we both know how people are. They easily fall in love and lose all scientific objectivity.
So yeah, I quite get your frustration.
Also hi, haven't seen you active in ElixirForum in a long time.
It's also "difficult" to integrate with existing C programs such as system drivers due to BEAM's execution model. It's possible to do, but there are a lot of foot guns & you have to be careful.
I did a small experiment with a few different languages and Elixir had the fewest changes going from single threaded to parallel.
Clojure was the lowest loc in general.
I'd argue the community and focus of the language.
Elixir is definitely not a language to write games in, but it's totally viable to write stuff that doesn't fit into the OTP model.
Might be important for you, but it's irrelevant for my comment.
I was going to comment this seperately, I'm glad someone pointed this out. +1