Alright, thanks! On Tue, 25 Jun 2019 at 21:33, José Valim <[email protected]> wrote:
> Witchcraft or one of its dependencies does implement Traversal. There was > a previous discussion on this list about Empty as well, which could be used > to implement traversable with Collectable. But I only mentioned traverse > for curiosity. I think all of them would be outside of scope for core. :) > > On Tue, Jun 25, 2019 at 21:10 Johanna Larsson < > [email protected]> wrote: > >> Ah, my version only updates the value, it doesn't expose the key in any >> way, so keys would always be preserved. Basically, the way that the list >> version doesn't modify order, just values. >> >> Traverse does sound interesting though! Do you know if any work has been >> done in that direction? >> >> On Tuesday, June 25, 2019 at 8:53:43 PM UTC+2, José Valim wrote: >>> >>> Re: duplicates. You could do something like "update_in [:foo, >>> &all_map/3], ..." and that changes the keys in a way you have duplicate >>> keys, which would be lot. >>> >>> The code snippet look neat though. I guess the more general version of >>> it would be a traverse/3 function powered by a Traverse protocol that knows >>> to enumerate and put things back together. Then it would be able to work >>> with binaries, maps, lists, etc. >>> >>> *José Valim* >>> www.plataformatec.com.br >>> Skype: jv.ptec >>> Founder and Director of R&D >>> >>> >>> On Tue, Jun 25, 2019 at 8:46 PM Johanna Larsson <[email protected]> >>> wrote: >>> >>>> Fair enough! I'm curious what you mean by duplicate keys, that wouldn't >>>> happen for a map, would it? >>>> >>>> To give more context, I use my version the same as `Access.all/0`: >>>> >>>> update_in( >>>> data, >>>> ["hosts", &all_map/3, "events", &all_map/3], >>>> updater >>>> ) >>>> >>>> and the code is pretty much the same, just turn the map into a list >>>> before using the same code as `Access.all/0` and then back to map. >>>> >>>> On Tuesday, June 25, 2019 at 6:30:11 PM UTC+2, José Valim wrote: >>>>> >>>>> I don't think there is anything that makes it hard to implement, >>>>> except the conceptual issues that happen from such feature. If there are >>>>> duplicate keys, which one wins? The other concern is that the Access API >>>>> is >>>>> also mostly specific to one data type, so we would need a new function >>>>> for >>>>> maps and I am not sure if it is worth it. It may be best to roll your own. >>>>> :) >>>>> >>>>> >>>>> *José Valim* >>>>> www.plataformatec.com.br >>>>> Skype: jv.ptec >>>>> Founder and Director of R&D >>>>> >>>>> >>>>> On Tue, Jun 25, 2019 at 6:26 PM Johanna Larsson <[email protected]> >>>>> wrote: >>>>> >>>>>> I recently found the need for, and implemented, a version of >>>>>> `Access.all/0` that handles maps. The implementation is very similar to >>>>>> the >>>>>> one for lists, so I'm curious if anyone has any insight into why there's >>>>>> no >>>>>> built-in version for maps. If there's something I'm missing that makes it >>>>>> difficult to implement in a nice way that doesn't have weird corner >>>>>> cases, >>>>>> or if there just hasn't been a perceived need for it. >>>>>> >>>>>> I tried searching this mailing list and the Github repo but I wasn't >>>>>> able to spot anything related to "Access.all". >>>>>> >>>>>> -- >>>>>> 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 [email protected]. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/elixir-lang-core/88ae7e74-5bbb-4b3e-9eaf-cc1344a114e5%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/88ae7e74-5bbb-4b3e-9eaf-cc1344a114e5%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>>> >>>>>> -- >>>> 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 [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/elixir-lang-core/3598b84f-26a9-4430-b4c3-f449b4174f63%40googlegroups.com >>>> <https://groups.google.com/d/msgid/elixir-lang-core/3598b84f-26a9-4430-b4c3-f449b4174f63%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> -- >> 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 [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elixir-lang-core/28d028b7-374f-487a-b141-6a2c39f4dff1%40googlegroups.com >> <https://groups.google.com/d/msgid/elixir-lang-core/28d028b7-374f-487a-b141-6a2c39f4dff1%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- > > > *José Valim* > www.plataformatec.com.br > Skype: jv.ptec > Founder and Director of R&D > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4JFmQDEGTFEZor-MHNM8Qm6ABR4zL%3DvsfS6G3GmNdj%2BZg%40mail.gmail.com > <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4JFmQDEGTFEZor-MHNM8Qm6ABR4zL%3DvsfS6G3GmNdj%2BZg%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAKL9qdSukf-nKTyjNWcFeO24NojH1K9Ac_uH%2Bk0VoZOCBS3Xdg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
