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/OO4QLGO3A52H4WMSXTYQMMR6NRQ6FUPO/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to