You need to use is like this. iex(1)> ["a","b","c"] |> Enum.any?(&String.valid?/1) |> Kernel.!() false iex(2)> !( ["a","b","c"] |> Enum.any?(&String.valid?/1)) false
On Wed, 22 Jun 2022 10:26:57 -0700 Kurtis Rainbolt-Greene <kurtis@rainbolt-greene.online> wrote: > 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 > <zachary.s.dan...@gmail.com> 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 > > <halosta...@gmail.com> 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 < > >> mladen.petko...@gmail.com> wrote: > >> > >>> Got my support, i've used something similar in Ruby. > >>> > >>> уторак, 21. јун 2022. у 08:50:36 UTC+2 zoran...@gmail.com је > >>> написао/ла: > >>>> I would support this. It's handy in Ruby lang. > >>>> > >>>> On Monday, June 20, 2022 at 1:31:35 AM UTC+2 marij...@gmail.com > >>>> 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 > >>>>> ad...@a-corp.co.uk 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 > >>>>>> <filippaun...@gmail.com> 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 urosj...@gmail.com је > >>>>>>> написао/ла: > >>>>>>> > >>>>>>>> I'd like this to be added. Just makes sense to do it. My two > >>>>>>>> cents субота, 18. јун 2022. у 14:29:49 UTC+2 > >>>>>>>> zvon...@gmail.com је написао/ла: > >>>>>>>> > >>>>>>>>> @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 br...@grox.io је > >>>>>>>>> написао/ла: > >>>>>>>>> > >>>>>>>>>> !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 < > >>>>>>>>>> zvon...@gmail.com> 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 > >>>>>>>>>>> elixir-lang-co...@googlegroups.com. 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> > >>>>>>>>>> br...@grox.io > >>>>>>>>>> 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 elixir-lang-co...@googlegroups.com. > >>>>>>> > >>>>>> 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 elixir-lang-core+unsubscr...@googlegroups.com. > >>> 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 • halosta...@gmail.com • aus...@halostatue.ca > >> 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 elixir-lang-core+unsubscr...@googlegroups.com. > >> 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 elixir-lang-core+unsubscr...@googlegroups.com. > > 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> > > . > > > > -- 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/62b3564c.1c69fb81.c4a63.03b5SMTPIN_ADDED_MISSING%40gmr-mx.google.com.