I mean ` Enum.at/2` ( http://enum.at/2` ) 😆
On Thu, Sep 21, 2023 at 1:14 PM, Zach Daniel < zachary.s.dan...@gmail.com > wrote: > > Languages that support it via square brackets: Rust, Ruby, Javascript, > Python, C, Julia. > > > I see your point, ultimately for me what is frustrating is when I have > predefined data structures and we have a tool for "get the value at some > point (i.e map keys)" so I can do `map[:key][:key]` but if I want to write > `map[:key][0][:key][0]` I have to reorient the code entirely to use > `get_in` or piped functions like `|> Map.get(:key)`. Getting a key out of > a keyword list would be equally as slow as getting a list at an index, so > it didn't seem to me like the purpose of the `[]` was to only do fast > operations. > > > > There are plenty of cases where I need to get things positionally out of > lists, the two that come to mind are handling various data structures that > I got externally, like from an API (I can use bracket access until I get > to a list then I can't) and testing. Often I'm testing that something at a > very specific point in a produced data structure is a specific value. I.e > "the tenth item at the path `foo[:bar]` is X". I can do that with pattern > matching, but its only feasible to a point (like pattern matching the 10th > item from a list does not look good). We can use `get_in` but we could > also make that argument for everything and not have bracket access at all. > It seems like a natural extension of that choice to give lists (and > probably tuples) sensible behavior with bracket syntax. > > > > I'm not necessarily convinced that not having `list[i]` will ultimately > convince people not to write those bad algorithms, because they can just > as easily say ` List. at ( http://list.at/ ) (list, 1)`. But wether or not > I'm convinced of that is not relevant 😆 > > > > > > > On Thu, Sep 21, 2023 at 12:39 PM, Justin Wood < me@ ankhers. dev ( > m...@ankhers.dev ) > wrote: > >> >> >> >>> It was pointed out that perhaps we don't do this to express that indexing >>> a list is not fast in Elixir like it is in other languages, but I'm not >>> sure if that is sufficient reason IMO to leave out a typically very >>> standard feature of lists. >>> >>> >>> >>> Thoughts? >>> >>> >> >> >> >> Can you give an example of a language that supports this? In my >> experience, languages do not provide this. >> >> >> >> In Haskell, you need to the non-standard !! operator. >> >> >> >> myList !! 5 >> >> >> >> OCaml does not provide a way to do this at all and you need to manually >> iterate through the list to find the element you want (maybe other stdlibs >> like Core provide something, but I have not used them) >> >> >> >> Racket has the list-ref function in order to accomplish this >> >> >> >> (list-ref my-list 3) >> >> >> >> Common Lisp has the nth function for this >> >> >> >> (nth 5 my-list) >> >> >> >> In comparison, Elixir has provided the Enum. at/ 2 ( http://enum.at/2 ) >> function. >> >> >> >> >> While I believe most languages do provide some facility to retrieve the >> value at some index of a list, most do not provide it as square bracket >> indexing you would see in other languages where arrays are more common >> such as Ruby or Javascript. >> >> >> >> Justin >> >> >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "elixir-lang-core" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to elixir-lang-core+unsubscribe@ googlegroups. com ( >> elixir-lang-core+unsubscr...@googlegroups.com ). >> To view this discussion on the web visit https:/ / groups. google. com/ d/ >> msgid/ elixir-lang-core/ dc142043-83dc-48e6-8c3f-7a39c8376d0e%40app. >> fastmail. >> com ( >> https://groups.google.com/d/msgid/elixir-lang-core/dc142043-83dc-48e6-8c3f-7a39c8376d0e%40app.fastmail.com?utm_medium=email&utm_source=footer >> ). >> > > -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/lmtg1j6f.75971c40-3977-4bee-8f15-4408cd5db3fc%40we.are.superhuman.com.