4 ms·
Same things arrays are used for in all mainstream languages ie. index-based access.
by cutler 3y ago
Same things arrays are used for in all mainstream languages ie. index-based access.
- toast0 3y agoYou 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.
- cutler 3y agoI understood tuples are only optimised for a handful of elements.
- throwawaymaths 3y agoThis is correct. If you want a true array experience you have to use atomics or a nif.
- throwawaymaths 3y agoThat's not answering the question. I've written many thousands of lines of elixir and never used index based access.
- cutler 3y agoGood for you but why do all mainstream languages, including Clojure, have them?
- throwawaymaths 3y agoBecause 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.
- cutler 3y agoThen maybe that's a shortcoming of absolute immutability.