It would be nice to have this.

On Sun, Aug 18, 2019 at 5:16 PM Roman Smirnov <pom...@gmail.com> wrote:

> > My bad, I was referring to Enum.reject/2!
>
> Well, Map.reject/2 does not exist yet. So, we could add it as well.
>
> понедельник, 19 августа 2019 г., 0:35:41 UTC+3 пользователь Andrea
> Leopardi написал:
>>
>> > Why? How Enum.drop/2 is related to Enum.filter/2? They are doing
>> completely different things.
>>
>> My bad, I was referring to Enum.reject/2!
>>
>> Andrea Leopardi
>> an.le...@gmail.com
>>
>>
>> On Sat, Aug 17, 2019 at 11:42 PM Roman Smirnov <pom...@gmail.com> wrote:
>>
>>> Why? How Enum.drop/2 is related to Enum.filter/2? They are doing
>>> completely different things.
>>>
>>> четверг, 15 августа 2019 г., 13:37:07 UTC+3 пользователь Andrea Leopardi
>>> написал:
>>>>
>>>> We should also address the fact that if we add Map.filter/2, we also
>>>> likely have to add Map.drop/2 (to mimic Enum and Stream), but that name is
>>>> already taken.
>>>>
>>>> On Thu, 15 Aug 2019 at 12:26, Johanna Larsson <johanna....@gmail.com>
>>>> wrote:
>>>>
>>>>> The stream version is by far the slowest, which isn't surprising since
>>>>> streams bring some overhead. Didn't measure memory usage though
>>>>> https://gist.github.com/joladev/2b51260107078a1fc7f9d4504916fe21
>>>>>
>>>>> Honestly, I tend to agree it would be nice to add it, for feature
>>>>> completeness, even if it doesn't improve performance hugely. I understand
>>>>> the desire to avoid unnecessary clutter in the core language, but this is 
>>>>> a
>>>>> core erlang function that we're explicitly not wrapping, when most of the
>>>>> other ones are wrapped. And most likely just because it wasn't around from
>>>>> the start. It's quite a bit more ergonomic to use `Map.filter` rather than
>>>>> `for` or `map|>Enum.filter(pred)|>Enum.into({})`. Much cleaner.
>>>>>
>>>>> Not too hard to implement your own version of `Map.filter` though, so
>>>>> I don't feel too strongly about it.
>>>>>
>>>>> On Thu, Aug 15, 2019 at 11:12 AM Alexei Sholik <alcos...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> The simplest alternative is to use :maps.filter(). It's not as easy
>>>>>> to pipe into, but that's a minor concern for me.
>>>>>>
>>>>>> As another alternative, this should be faster and have lower memory
>>>>>> footprint than using Enum, although you'd need to benchmark it as well to
>>>>>> be sure:
>>>>>>
>>>>>> map
>>>>>> |> Stream.filter(predicate)
>>>>>> |> Map.new()
>>>>>>
>>>>>> Personally, I would love to see an extension for Map.new() that would
>>>>>> allow filtering the first argument in addition to the currently supported
>>>>>> transformation. So instead of the current
>>>>>>
>>>>>> Map.new(enumerable, fn thing -> {key, val} end)
>>>>>>
>>>>>> we could have
>>>>>>
>>>>>> Map.new(enumerable, map: fn thing -> {key, val} end, filter: fn
>>>>>> {_key, val} -> predicate(val) end)
>>>>>>
>>>>>> Such an extension is unlikely to be added though because it would be
>>>>>> another way of doing what is already possible with Enum, Stream, and Map.
>>>>>>
>>>>>> On Thu, Aug 15, 2019 at 10:29 AM Roman Smirnov <pom...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Since OTP 18 there is a pretty convenient function :maps.filter
>>>>>>> <http://erlang.org/doc/man/maps.html#filter-2>.
>>>>>>>
>>>>>>> I think it would be nice to have Map.filter(map, predicate) in
>>>>>>> Elixir as well instead of doing
>>>>>>>
>>>>>>>
>>>>>>> map|> Enum.filter(predicate)|> Enum.into(%{})
>>>>>>>
>>>>>>>
>>>>>>> or
>>>>>>>
>>>>>>> for {key, value} <- map, some_filter(key, value), into: %{}, do: {key, 
>>>>>>> value}
>>>>>>>
>>>>>>> The first one alternative is slower, b/c of 2-step transformation,
>>>>>>> and the second one consume more memory, could not be piped and has a 
>>>>>>> lack
>>>>>>> of expressiveness (too imperative way to do a simple filtration).
>>>>>>> There were benchmarks and a small discussion in PR:
>>>>>>> https://github.com/elixir-lang/elixir/pull/9292, but the discussion
>>>>>>> should be moved to this mailing list.
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> 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-l...@googlegroups.com.
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/elixir-lang-core/5d403c4a-91f8-4c4d-8dc0-297185a2aed8%40googlegroups.com
>>>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/5d403c4a-91f8-4c4d-8dc0-297185a2aed8%40googlegroups.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-l...@googlegroups.com.
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/elixir-lang-core/CAAPY6eO5aDifRxHxv7QtD4%3Di_bYbUw1sphxMhq4jEjuR9naPSQ%40mail.gmail.com
>>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/CAAPY6eO5aDifRxHxv7QtD4%3Di_bYbUw1sphxMhq4jEjuR9naPSQ%40mail.gmail.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-l...@googlegroups.com.
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/elixir-lang-core/CAKL9qdTxQWdKDM7B%3D1XLkf7w9PeshpfSyrpsuhM%3DeaEqdZVSDA%40mail.gmail.com
>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/CAKL9qdTxQWdKDM7B%3D1XLkf7w9PeshpfSyrpsuhM%3DeaEqdZVSDA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>> --
>>>>
>>>> Andrea Leopardi
>>>> an.le...@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-l...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/elixir-lang-core/c819a8cc-c3b6-41cc-a056-76a294b79fb6%40googlegroups.com
>>> <https://groups.google.com/d/msgid/elixir-lang-core/c819a8cc-c3b6-41cc-a056-76a294b79fb6%40googlegroups.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/13ab9f68-3895-47b1-bd7f-dee62f1a2e66%40googlegroups.com
> <https://groups.google.com/d/msgid/elixir-lang-core/13ab9f68-3895-47b1-bd7f-dee62f1a2e66%40googlegroups.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/CAKwTqEnaORY9AROvDN7JR%3Ds5%2BjyYVcf%2Bbj7p84x6Scxa2QfqCQ%40mail.gmail.com.

Reply via email to