News for hackers. Stuff that matters.
Re:Unpacking Elixir: Concurrency by malkosta on Friday August 25, 2023 @11:30AM (#37262836)
> What would be the difference between a "real vector" and a Map with numeric keys?

Access in O(1) instead of O(nlogn).

Re:Unpacking Elixir: Concurrency by brabel on Friday August 25, 2023 @02:04PM (#37265032)
Data is immutable in Erlang. How do you know the runtime does not optimize Maps with numeric keys into arrays?
Re:Unpacking Elixir: Concurrency by cutler on Friday August 25, 2023 @02:08PM (#37265080)
Data is also immutable in Clojure but it still has vectors.
Re:Unpacking Elixir: Concurrency by KingMob on Saturday August 26, 2023 @03:08AM (#37270496)
Yeah, but Clojure vectors are actually trees built to be persistent based on ideas from Bagwell's hash array mapped tries (what Clojure maps are), so they're not technically O(1).

Both maps and vectors in Clojure are trees, albeit very shallow trees (32-way branching). The difference lies in the interfaces and the lookup methods. (Maps hash keys and use bits to know which subtree to descend, while vectors use index bits.)

Re:Unpacking Elixir: Concurrency by sb8244 on Friday August 25, 2023 @11:20PM (#37269671)
Another thing with numeric maps is how insert would work. Swapping elements is trivial, but inserting a new one would require rewriting every subsequent entry.