Currently I have an Array module modeled on Erlangs for speed with extra
functions/macros that work like the Dict interface (except mine accepts the
Array passed in at the beginning or the end of the parameter list since
Dict has it at the beginning and tuple function calls put it at the end)
except it only takes integers as keys and hard dies on anything else, but
is faster than maps (a little less than twice as fast on gets, but
substantially faster, well over ten times as fast and gets faster the
larger the data that I am using over maps on erts-7.3/BEAM18, unsure if 19
is any faster):
```elixir
iex(1)> a = Array.new()
{Array, 0, 10, nil, 10}
iex(2)> a = a.resize(400)
{Array, 400, 1000, nil, 1000}
iex(3)> a = a.put_new(42, "testing")
{Array, 400, 1000, nil,
{{10, 10, 10, 10, {nil, nil, "testing", nil, nil, nil, nil, nil, nil,
nil}, 10,
10, 10, 10, 10, 10}, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}}
```
How can I also enable this syntax:
```elixir
iex> a[42]
nil
```
Right now it instead raises a `FunctionClauseError` because `Access.fetch`
is hard-coded to only a couple of things. Could not something like this be
added as an `Access.fetch/2` clause so it follows the same pattern as
maps/structs?
```elixir
def fetch(tup, key) when is_tuple(tup) and is_atom(elem(tup, 0)) do
elem(tup, 0).fetch(tup, key)
end
```
--
You received this message because you are subscribed to the Google Groups
"elixir-lang-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-talk/c29cfa0f-513d-4c92-8985-9ebc1ae94548%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.