News for hackers. Stuff that matters.
Re:Unpacking Elixir: Concurrency by cutler on Friday August 25, 2023 @02:06PM (#37265055)
Same things arrays are used for in all mainstream languages ie. index-based access.
Re:Unpacking Elixir: Concurrency by toast0 on Friday August 25, 2023 @03:24PM (#37266012)
You want tuples. They've got index-based access, and all your useful things in erlang:element/2, setelement/3, append_element/3, delete_element/2, insert_element/3.

With a big caveat that modifying tuples isn't great for performance unless the compiler or optimizer determine that mutating the tuple is acceptable rather than providing a mutated copy.

Re:Unpacking Elixir: Concurrency by cutler on Friday August 25, 2023 @10:05PM (#37269282)
I understood tuples are only optimised for a handful of elements.
Re:Unpacking Elixir: Concurrency by throwawaymaths on Friday August 25, 2023 @10:20PM (#37269351)
This is correct. If you want a true array experience you have to use atomics or a nif.
Re:Unpacking Elixir: Concurrency by throwawaymaths on Saturday August 26, 2023 @01:45AM (#37270226)
That's not answering the question. I've written many thousands of lines of elixir and never used index based access.
Re:Unpacking Elixir: Concurrency by cutler on Saturday August 26, 2023 @06:42AM (#37271546)
Good for you but why do all mainstream languages, including Clojure, have them?
Re:Unpacking Elixir: Concurrency by throwawaymaths on Saturday August 26, 2023 @11:23PM (#37279154)
Because they're built on mutable datatypes. Elixir (and Erlang, and some flavors of lisp) are not. Instead of fudging it to make it syntactically "look like" an array access, elixir makes you flip through the list to understand the cost of what you're doing.

Even clojure's is a cheat.

Re:Unpacking Elixir: Concurrency by cutler on Tuesday August 29, 2023 @01:43PM (#37311313)
Then maybe that's a shortcoming of absolute immutability.