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.
