Wouldn't the outcome `not Integer.is_negative(:atom)` be even worse than
what we have now?

José Valim <[email protected]> schrieb am Mi., 22. Nov. 2017 um
22:06 Uhr:

> > I don't believe we would need the is_non_ versions because you can just
> invert the positive case, right? Which also means that >= just becomes
> "when not is_negative(val)".
>
> Right. Although I find "is_integer(x) and x >= 0" much clearer than "not
> Integer.is_negative(x)". The second is even longer.
>
>
>
> *José Valimwww.plataformatec.com.br
> <http://www.plataformatec.com.br/>Founder and Director of R&D*
>
> On Wed, Nov 22, 2017 at 6:53 PM, Isaac Whitfield <[email protected]> wrote:
>
>> I don't believe we would need the is_non_ versions because you can just
>> invert the positive case, right? Which also means that >= just becomes
>> "when not is_negative(val)".
>>
>> My only suggestion for your latter point is that it's a far more specific
>> use case than checking positive/negative values, and I'm just aiming for
>> the general case here. Would you be more in favour of an is_greater_than/2
>> style, or is that "too close" to the > operator at that point?
>>
>> For what it's worth, I did some digging and already found a handful of
>> places on GitHub that people rolled their own "is_positive" and most of
>> them are assuming the type. Beyond that I can't check with much accuracy
>> due to GitHub not allowing for ">" in a search. If you check for "when 0"
>> there are also a few matches for some guard statements which also assume
>> type. Obviously, there are false positives where the type can only be one
>> thing, but it does show that it's not uncommon.
>>
>> Thanks all!
>>
>> On Wednesday, November 22, 2017 at 7:44:40 AM UTC-8, José Valim wrote:
>>>
>>> The issue with is_positive and is_negative is that they do not really
>>> solve the problem. What if you want >= 0? Should we also add
>>> is_non_negative and is_non_positive? Or what if you want x >= 2, which is
>>> what you would use if you were implementing fibonacci?
>>>
>>>
>>>
>>> *José Valimwww.plataformatec.com.br
>>> <http://www.plataformatec.com.br/>Founder and Director of R&D*
>>>
>>> On Wed, Nov 22, 2017 at 1:38 PM, Andrea Leopardi <[email protected]>
>>> wrote:
>>>
>>>> is_nil/1 is harder to justify for me and I get that it could be
>>>> implemented as "== nil". As for is_odd/1 and is_even/1, have a look at they
>>>> implementation. They are implemented in a faster but more obscure way than
>>>> the simple "rem() == 0" or "rem() == 1".
>>>>
>>>>
>>>> Andrea Leopardi
>>>> [email protected]
>>>>
>>>> On Wed, Nov 22, 2017 at 4:22 PM, Isaac Whitfield <[email protected]>
>>>> wrote:
>>>>
>>>>> I'm curious what you feel about is_odd/1, is_even/1 and is_nil/1?
>>>>>
>>>>> On Wednesday, November 22, 2017 at 7:20:35 AM UTC-8, Tallak Tveide
>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Sure, but saying "we'll never fix them all, so why even try?" is not
>>>>>>> a good argument. Saying that the solution is unit tests is true for 
>>>>>>> every
>>>>>>> behaviour; moreover people who don't know this semantic wouldn't test 
>>>>>>> for
>>>>>>> it.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> I'm arguing that I feel this direction is not what I would expect of
>>>>>> Elixir, being a dynamically typed language. I would not trade "bloating 
>>>>>> the
>>>>>> Kernel module" (sorry for not finding a nicer wording, I don't mean to be
>>>>>> harsh) for this functionality.
>>>>>>
>>>>> --
>>>>> 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/09ce8113-eb6f-41cd-aa06-9885c79098e4%40googlegroups.com
>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/09ce8113-eb6f-41cd-aa06-9885c79098e4%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> --
>>>> 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/CAM9Rf%2BJmDDSS3pnMkiPOthE7p6JT%3Dsq4Z__frjzQzH5KOpV8yw%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/elixir-lang-core/CAM9Rf%2BJmDDSS3pnMkiPOthE7p6JT%3Dsq4Z__frjzQzH5KOpV8yw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> --
>> 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/0054998a-61b9-483d-8d5f-c5b52701759b%40googlegroups.com
>> <https://groups.google.com/d/msgid/elixir-lang-core/0054998a-61b9-483d-8d5f-c5b52701759b%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> 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/CAGnRm4%2Bb3rNi1PvP-KyJA_yLGQmDAg4bLZ-_FQ6NYodkPeh%3DAQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2Bb3rNi1PvP-KyJA_yLGQmDAg4bLZ-_FQ6NYodkPeh%3DAQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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/CA%2BbCVssj5sJT-rPn%2BXGKUiOtn%2BZY-puCZRE_%3DsaXhvur2rTTVA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to