About 20 people have pointed out that `inf` *IS* a constant. It's just in
math rather then built-ins.

On Sat, Sep 5, 2020, 5:10 PM Cade Brown <brown.c...@gmail.com> wrote:

> You can absolutely represent pi or e with a constant (3.14159265358979....)
>
> The same cannot be said for infinity, hence why it should be a constant
> rather than a function call to retrieve the value
>
> On Sat, Sep 5, 2020, 4:08 PM David Mertz <me...@gnosis.cx> wrote:
>
>> On Sat, Sep 5, 2020 at 3:39 PM Cade Brown <brown.c...@gmail.com> wrote:
>>
>>> The fact that so many modules and packages must define an 'inf' is, to
>>> me, a signal that such a constant WOULD be useful. All of them (should) be
>>> referring to the same value, anyways, so why not make a global constant
>>> instead?
>>>
>>
>> `pi` is a widely used constant that is defined in both numpy and math.
>> `e` is a widely used constant that is defined in both numpy and math.
>> Neither of them is included in builtins.  What is different about `inf` or
>> `Infinity`?
>>
>> The only real goal I've seen is that you hope that `x == eval(repr(x))`
>> for floating point numbers.  But that is doomed to failure since it cannot
>> work for NaN by its very definition.  So with your change the situation
>> would be: It doesn't work for floats in general, but it works for two
>> additional floating point values that it didn't used to work for.... and
>> even that only means that you don't want to type one import:
>>
>> >>> from math import inf
>> >>> inf == eval(repr(inf))
>> True
>>
>> Lots of people have noted that being able to eval a repr is only a vague
>> goal in Python, that works *often* at most.
>>
>> ---
>>
>> Now if you want something genuinely useful, I wish we had an integer
>> infinity.  There are places where `float('inf')` just isn't suitable
>> because of the wrong type.
>>
>> Doing a grep of CPython source, it looks like `sys.maxsize` occurs 343
>> times, and in almost every one of them it is a stand-in for "infinity."  I
>> am certain there are other places where "a big number" is used because no
>> integer infinity exists; sys.maxsize is only one spelling of that.
>>
>> The general context where I'd want it is in code like this:
>>
>> last = int.Infinity if not n:=smaller_last() else n
>> good_stuff = all_stuff[first:last+1]
>>
>> Or in a similar spirit, we might be looking for a bound, and run `bound =
>> min(new_thing, bound)` in a loop.  For that code, I need an initial value;
>> albeit, in that case, float inf is probably fine.  And if I'm writing code
>> to count the number of books on my shelf, sys.maxsize is a perfectly good
>> starting point as well.  But int.Infinity expresses the actual intention
>> more clearly.
>>
>> --
>> The dead increasingly dominate and strangle both the living and the
>> not-yet born.  Vampiric capital and undead corporate persons abuse
>> the lives and control the thoughts of homo faber. Ideas, once born,
>> become abortifacients against new conceptions.
>>
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/OXZVL75IVC6IKE5XFSDRLB4EQCBX2ESO/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to