While quippy `!Enum.any?` also just doesn't work in some cases:

```
iex(2)> ["a","b","c"] |> !Enum.any?(&String.valid?/1)
** (ArgumentError) cannot pipe ["a", "b", "c"] into
!Enum.any?(&String.valid?/1), the :! operator can only take one argument
```

Obviously you can get cute:

```
iex(2)> ["a","b","c"] |> Enum.any?(&String.valid?/1) |> Kernel.!()
false
```

On Wed, Jun 22, 2022 at 8:09 AM Zach Daniel <[email protected]>
wrote:

> I think there is a really important function of a standard library for
> things like this. This conversation has effectively generated knowledge,
> specifically that the best way to implement `Enum.none?/2` is simply by
> negating `Enum.any?/2`. And while it is very easy for anyone to add this
> code to their project `!Enum.any?/2` what is *not* so easy is knowing that
> "the best way to implement `Enum.none?/2` is via negating `Enum.any?/2`. We
> all have that context now, so it is easy to say it shouldn't be in the
> standard library. I don't think that things only belong in the std library
> if the std library offers an optimization. Sometimes the important context
> is that the std library *doesn't* offer an optimization. Personally, I
> believe things like `Enum.none?/2` belong in the std library.
>
>
> On Wed, Jun 22, 2022 at 10:49 AM, Austin Ziegler <[email protected]>
> wrote:
>
>> I’ll add my support for an explicit `Enum.none?/2`, even though
>> `!Enum.any?(llst)` or `Enum.any?(list, & !&1)` is equivalent. I haven’t
>> faced this particular problem *in Elixir*, but JavaScript doesn’t have
>> this, and I make the mistake of using `!list.all()` instead of
>> `!list.some()` *every single time* I have to implement it.
>>
>> It’s a subtle enough difference that I think that the increased
>> readability and reduced error rate are worth the added API space, as simply
>> documenting this particular use case in `Enum.any?/2` would end up begging
>> the question as to why not implement this as a standard function, and
>> leaving it undocumented leads to incorrect implementations.
>>
>> -a
>>
>> On Tue, Jun 21, 2022 at 3:01 AM Mladen Petkoski <
>> [email protected]> wrote:
>>
>>> Got my support, i've used something similar in Ruby.
>>>
>>> уторак, 21. јун 2022. у 08:50:36 UTC+2 [email protected] је написао/ла:
>>>
>>>> I would support this. It's handy in Ruby lang.
>>>>
>>>> On Monday, June 20, 2022 at 1:31:35 AM UTC+2 [email protected] wrote:
>>>>
>>>>> I agree with Filip. It can be just an alias for negated Enum.any?
>>>>> I don't think it'll be that much of a bloat
>>>>>
>>>>> On Saturday, June 18, 2022 at 8:52:36 PM UTC+2 [email protected]
>>>>> wrote:
>>>>>
>>>>>> Personally I think a function like this is easy enough to implement
>>>>>> for our own codebases if we need one. I don’t think there is much
>>>>>> precedence in other langs for such a function and a core implementation 
>>>>>> is
>>>>>> not likely to be any different from what you would write in your 
>>>>>> codebase,
>>>>>> meaning having it in core is unlikely to save anyone from gotchas or
>>>>>> improve the performance of their implementation.
>>>>>>
>>>>>> To me it feels like bloat.
>>>>>>
>>>>>> and given that you can already write:
>>>>>>
>>>>>> not Enum.any?(…)
>>>>>>
>>>>>> It really doesn’t improve anything much imho.
>>>>>>
>>>>>> Best
>>>>>>
>>>>>> Adam
>>>>>>
>>>>>> On Sat, 18 Jun 2022 at 19:40, Filip Paunkovic <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> Yeah, I'd like to see this as well. Maybe implement it as a negation
>>>>>>> of Enum.any?
>>>>>>>
>>>>>>> субота, 18. јун 2022. у 19:26:58 UTC+2 [email protected] је
>>>>>>> написао/ла:
>>>>>>>
>>>>>>>> I'd like this to be added. Just makes sense to do it. My two cents
>>>>>>>> субота, 18. јун 2022. у 14:29:49 UTC+2 [email protected] је
>>>>>>>> написао/ла:
>>>>>>>>
>>>>>>>>> @Andrey yeah that is correct but seeing that Enum.filter and
>>>>>>>>> Enum.reject exist I thought that Enum.all? should have a counterpart 
>>>>>>>>> as
>>>>>>>>> well. Not just a negated Enum.any?
>>>>>>>>>
>>>>>>>>> субота, 18. јун 2022. у 13:45:28 UTC+2 [email protected] је
>>>>>>>>> написао/ла:
>>>>>>>>>
>>>>>>>>>> !Enum.any is what you are looking for. Also, Enum.any? takes an
>>>>>>>>>> optional function, so Enum.any?(list, &! &1) works, as does 
>>>>>>>>>> Enum.any?(list,
>>>>>>>>>> fn x -> !x end).
>>>>>>>>>>
>>>>>>>>>> -bt
>>>>>>>>>>
>>>>>>>>>> On Sat, Jun 18, 2022 at 7:36 AM Zvonimir Rudinski <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Seeing Enum.all?/2 being available made me assume there was
>>>>>>>>>>> also an Enum.none?/2 (like in Ruby), and I was a bit suprised
>>>>>>>>>>> to learn there was no such thing.
>>>>>>>>>>> I'm aware that I could just do !Enum.all?/2, but Enum.none?/2
>>>>>>>>>>> sees much nicer to me.
>>>>>>>>>>>
>>>>>>>>>>> One more argument that I could make is that !Enum.all?/1 ==
>>>>>>>>>>> Enum.none?/1 is not true in all cases.
>>>>>>>>>>> Example:
>>>>>>>>>>> If we have [false, true], !Enum.all?/1 will be true, but
>>>>>>>>>>> Enum.none?/1 will be false
>>>>>>>>>>>
>>>>>>>>>>> I would like your thoughts on this one.
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>>
>>>>>>>>>> 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/0b68e108-825f-49d5-86ec-317caa2a852fn%40googlegroups.com
>>>>>>>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/0b68e108-825f-49d5-86ec-317caa2a852fn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Bruce Tate
>>>>>>>>>> CEO
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> <https://bowtie.mailbutler.io/tracking/hit/f8218219-d2a8-4de4-9fef-1cdde6e723f6/c7c97460-016e-45fb-a4ab-0a70318c7b97>
>>>>>>>>>>
>>>>>>>>>> Groxio, LLC.
>>>>>>>>>> 512.799.9366 <(512)%20799-9366>
>>>>>>>>>> [email protected]
>>>>>>>>>> grox.io
>>>>>>>>>>
>>>>>>>>> --
>>>>>>> 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/187f642b-209b-4f99-867d-a3c173962b1cn%40googlegroups.com
>>>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/187f642b-209b-4f99-867d-a3c173962b1cn%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 [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/elixir-lang-core/3c24688c-5877-47f0-87c0-e7428345a15en%40googlegroups.com
>>> <https://groups.google.com/d/msgid/elixir-lang-core/3c24688c-5877-47f0-87c0-e7428345a15en%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> --
>> Austin Ziegler • [email protected][email protected]
>> http://www.halostatue.ca/http://twitter.com/halostatue
>>
>> --
>> 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/CAJ4ekQtQnsop1Rb4OAL_eF%2BRMHgJR6dXhaxaW0V_URMUw12BRg%40mail.gmail.com
>> <https://groups.google.com/d/msgid/elixir-lang-core/CAJ4ekQtQnsop1Rb4OAL_eF%2BRMHgJR6dXhaxaW0V_URMUw12BRg%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 [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/l4pq6nw3.cbf23422-0630-4845-acdc-9c7dde6281e8%40we.are.superhuman.com
> <https://groups.google.com/d/msgid/elixir-lang-core/l4pq6nw3.cbf23422-0630-4845-acdc-9c7dde6281e8%40we.are.superhuman.com?utm_medium=email&utm_source=footer>
> .
>


-- 
Kurtis Rainbolt-Greene,
Software Developer & Founder of Difference Engineers
202-643-2263

-- 
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/CAMhJPGia%2B0vfYroOhTfbMooVPV5QAbJh3xjLEaPWBRWnJE3ggA%40mail.gmail.com.

Reply via email to