Here's the screenshot: https://imgur.com/xUA9T7Y

понедељак, 27. јун 2022. у 00:45:16 UTC+2 Zvonimir Rudinski је написао/ла:

> It seems to be about 1.01x faster than the initial implementation
>
> петак, 24. јун 2022. у 03:48:13 UTC+2 zachary....@gmail.com је написао/ла:
>
>> not at a computer so i can't test it myself, but I'd be curious to see 
>> how implementing it as a negation of the predicate with `Enum.none?/2` 
>> instead of a negation of any would perform. Not important, just throwing it 
>> out there.
>>
>> ```
>> def none?(enum, func) do
>> Enum.all?(enum, fn i -> !func.(i) end)
>> end
>> ```
>>
>>
>> On Thu, Jun 23 2022 at 7:02 PM, Zvonimir Rudinski <zvon...@gmail.com> 
>> wrote: 
>>
>>> And it uses less memory!
>>> Benchmark shows about 3x less memory usage (tested with small, medium 
>>> and large list from https://elixirschool.com/en/lessons/misc/benchee), 
>>> but I forgot to take a screenshot :(
>>> I've also re-tested the speed with small, medium and large list and the 
>>> results are pretty much the same as in the Imgur URL.
>>> петак, 24. јун 2022. у 00:29:24 UTC+2 Zvonimir Rudinski је написао/ла:
>>>
>>>> The results are in:
>>>> https://imgur.com/a/vigOneF
>>>>
>>>> TLDR; I was suprised that the initial implementation WAS indeed faster 
>>>> than just negating !Enum.any?
>>>> четвртак, 23. јун 2022. у 23:50:34 UTC+2 Zvonimir Rudinski је 
>>>> написао/ла:
>>>>
>>>>> Thanks to everyone for the support! I agree with Austin for the JS 
>>>>> bit, God only knows how many times I confused !Enum.any/2 with 
>>>>> !Enum.all/2.
>>>>> I expect the opposite of all to be none. 
>>>>> Huge kudos to Kurtis for adding an example where something like 
>>>>> Enum.none?/2 would be useful.
>>>>> I've already forked Elixir and created a branch (I just have to 
>>>>> optimize the code a bit), so if Jose decides to re-open the PR it should 
>>>>> be 
>>>>> ready in no time.
>>>>> I'll run some benchmarks tomorrow to squeeze as much performance as 
>>>>> possible.
>>>>>
>>>>> среда, 22. јун 2022. у 19:50:07 UTC+2 eksperimental је написао/ла:
>>>>>
>>>>>> 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 <kur...@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....@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 
>>>>>> > > <halos...@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....@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> <(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-co...@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 • halos...@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-co...@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-co...@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-co...@googlegroups.com.
>>>
>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/elixir-lang-core/c7972043-e787-4f83-a9e3-8fc67541103cn%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/elixir-lang-core/c7972043-e787-4f83-a9e3-8fc67541103cn%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/b3dfcee3-771e-40f0-9b1f-52fed76f87fdn%40googlegroups.com.

Reply via email to