I love lazy_ too. We use _with for Enum functions such as split_with, but in Map I prefer lazy_ too now that you brought it up!
> On 12 Dec 2021, at 09:44, José Valim <jose.va...@dashbit.co> wrote: > > > Thank you for the proposal! > > I believe we actually discussed this a couple times, but we could never come > up with a good name. My thoughts as of now: > > * The terminology must definitely be "replace", because update is called even > if the key is nil. > > * However, we don't use the "_with" prefix much in the stdlib. However, we do > have the "_lazy" suffix, which is about invoking a function. So far, the lazy > suffix is "if such key does not exist, invoke this", but I think it would > work on "replace_lazy" such as, "invoke this function only if the key exists". > > Thoughts? > >> On Sun, Dec 12, 2021 at 8:15 AM Andrea Leopardi <an.leopa...@gmail.com> >> wrote: >> I really like this and was thinking about this just yesterday, but was >> struggling to come up with a name. I was thinking of "update_if_existing" >> but "replace_with" is actually fantastic, follows our conventions, and >> sounds great. Awesome job!! If others on the core team agree, I think you >> could send out a PR for this 😊 >> >>>> On 11 Dec 2021, at 22:24, Mackenzie Morgan <maco...@gmail.com> wrote: >>>> >>> Today's Advent of Code puzzle had a handful of us in the Elixir slack >>> wishing for something that bridged the gap between Map.update/4, >>> Map.update!/3, and Map.replace/3. >>> >>> Map.update/4 litters your map with extra keys you then have to find and >>> filter out. >>> Map.update!/3 throws exceptions which can be especially undesirable in a >>> pipeline. >>> Map.replace/3 requires you to pre-calculate the new value. >>> >>> The goal would be "if this key exists in the map, update its value using >>> this function." >>> >>> I wrote myself a little helper function (below) to wrap Map.replace/3, and >>> I know someone else said they made a bunch of {key, nil} s and then had to >>> filter them back out. >>> >>> Anyway, Advent of Code probably isn't the only time it'd be helpful to have >>> that syntactic sugar. Thoughts? >>> >>> Mackenzie >>> >>> def replace_with(map, key, _) when not is_map_key(map, key), do: map >>> def replace_with(map, key, f) do >>> Map.replace(map, key, f.(map[key])) >>> end >>> -- >>> 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/aace8ef8-3566-4637-afb5-56bfb2f3e626n%40googlegroups.com. >> >> -- >> 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/B1DA2E8B-F2CC-47FB-BA4F-89B2B1CD9CF7%40gmail.com. > > -- > 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/CAGnRm4JbOAVVu8ySiuPoE355VkYYS0p9aMt%2BY5ATBEyZcU-gtw%40mail.gmail.com. -- 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/3236DB92-B1B0-463D-82F7-FB4891672215%40gmail.com.