I used Erlang for many years, and in the last one full time. Not one time have I needed an "array". It seems you picked one odd feature no-one uses and are upset about it, I thik it is just a small misunderstand, if you share a bit more about what you are trying to do, you'll get more help.
> I just find this disappointing
Did you explain your use case to them. If you just said "I need an array" I see their response as perfectly rational. And from what I've seen, that is probably the friendliest and most approachable community, especially for newcomers.
If it's iterated over sequentially then a list works perfectly.
If it's random access then a map works.
I think it is John Hughes that said "The real question is not 'when should i use functional programming?' but 'when should i use imperative programming?' And the answer is 'When you need random access and complete control of your memory'"
I suspect that to use Elixir, you need to study a new way of doing things first. Then you'll see arrays in a different light.
I suspect that Elixir's maps are not different in this regard, as are Erlang's arrays, or maps in Haskell or OCaml. This is the canonical way to make an immutable map (see picture here: http://programmers.stackexchange.com/questions/195718/functi...).
So you want a list it seems
> l=[1,2,3]
> [h | t] = l
[1, 2, 3]
> h
1
> t
[2, 3]
> If I want to process data as a large indexed array Elixir isn't going to help meBut neither will Python. You'd want a large indexed array you probably want numpy.
See now you are revealing a bit more about your usecase that's helpful. So you have large amount of data and want to query it and process it. In that case you might want to check out ETS. The nice benefit, you have have cool matching or query list comprehensions of it. Can also access it concurrently from multiple processes:
http://elixir-lang.org/getting-started/mix-otp/ets.html
This is the Erlang side of it:
http://learnyousomeerlang.com/ets
> but the question here is whether it is deficient in other areas, making it too much of a niche language.
Of course it is deficient. C is deficient. Java, C++ is they all. Every language is deficient in some way. I haven't found a Perfect one yet. Still looking... Maybe Rust, who knows, still struggling to learn it.
Python comes with array.array¹ natively.
There is no native array syntax, but there are array functions in the stdlib:
> making it too much of a niche language.
No language will be the "one true language" that excels at everything.
For certain types of programming - generally in lower-level languages - arrays can be essential for performance. But then my assumption is that if you needed that kind of performance, you'd be using those languages.
So outside of performance, what's the functional difference between an actual array implementation - and a thing that looks, walks, and quacks like a duck?
Because of the immutable data, your best hopes are actually vectors or maps.
Btw, the erlang library you mention implements arrays on top of a tree of 10-ary(-ish) tuples. It'd need to be measured, but I'd be willing to bet that the native maps are faster at access, insert, and delete. The maps are implemented in C, and worst case for all operations would be O(n log n) or similar.
Complaining in the abstract isn't helpful.
If Elixir had arrays, why would that be better than using other enumerables like lists or tuples?
Since you refuse to be more specific, it sounds like you're just not willing to learn the language and the way problems are solved with it.
Expecting mutable C-type arrays in elixir/erlang is like expecting classes and lambdas in an assembly language. It's just not a good fit for what the language was designed to do.