On Fri, 4 Sep 2020 at 19:12, Cade Brown <brown.c...@gmail.com> wrote:

> I mentioned that in my post; however it doesn't satisfy the problems I
> have (mainly being that eval(repr(x))==x)
>

In [1]: from math import inf


In [2]: eval(repr(inf)) == inf

Out[2]: True

"works for me"

>
> I still think unifying it as a constant is better because then the repr of
> a float gives a string which, if evaluated, gives the float back exactly.
> Using math.inf or string conversion throws an error if you try to evaluate
> it
>
>
> On Fri, Sep 4, 2020, 6:05 PM Christopher Barker <python...@gmail.com>
> wrote:
>
>> This is in the math module already, along with NaN:
>>
>> In [1]: import math
>>
>>
>> In [2]: math.inf
>>
>> Out[2]: inf
>>
>> In [3]: math.nan
>>
>> Out[3]: nan
>>
>> The same value
>>
>> In [4]: math.inf == float('inf')
>>
>> Out[4]: True
>>
>> but not the same object -- i.e. it's not a singleton.
>>
>> In [5]: math.inf is float('inf')
>>
>> Out[5]: False
>>
>> -CHB
>>
>>
>>
>> On Fri, Sep 4, 2020 at 9:49 AM Cade Brown <brown.c...@gmail.com> wrote:
>>
>>> I am positing that Python should contain a constant (similar to True,
>>> False, None), called Infinity.
>>>
>>> It would be equivalent to `float('inf')`, i.e. a floating point value
>>> representing a non-fininte value. It would be the positive constant;
>>> negative infinity could retrieved via `-Infinity`
>>>
>>> Or, to keep float representation the same, the name `inf` could be used,
>>> but that does not fit Python's normal choice for such identifiers (but
>>> indeed, this is what C uses which is the desired behavior of string
>>> conversion)
>>>
>>> I think there are a number of good reasons for this constant. For
>>> example:
>>>   * It is also a fundamental constant (similar to True, False, and
>>> None), and should be representable as such in the language
>>>   * Requiring a cast from float to string is messy, and also obviously
>>> less efficient (but this performance difference is likely insignificant)
>>>       * Further, having a function call for something that should be a
>>> constant is a code-smell; in general str -> float conversion may throw an
>>> error or anything else and I'd rather not worry about that.
>>>   * It would make the useful property that `eval(repr(x)) == x` for
>>> floating point numbers (currently, `NameError: name 'inf' is not defined
>>> `)
>>>
>>> This makes it difficult to, for example, naively serialize a list of
>>> floats. For example:
>>>
>>> ```
>>> >>> x = [1, 2, 3, 4]
>>> >>> repr(x)
>>> '[1, 2, 3, 4]'
>>> >>> eval(repr(x)) == x
>>> True
>>> >>> x = [1, 2, 3, float('inf')]
>>> >>> repr(x)
>>> '[1, 2, 3, inf]'
>>> >>> eval(repr(x)) == x
>>> Traceback (most recent call last):
>>>   File "<stdin>", line 1, in <module>
>>>   File "<string>", line 1, in <module>
>>> NameError: name 'inf' is not defined
>>> ```
>>>
>>> To me, this is problematic; I would expect it to work seamlessly as it
>>> does with other floating point constants.
>>>
>>> A few rebuttals/claims against:
>>>   - Creating a new constant (Infinity) which is unassignable may break
>>> existing code
>>>   - Converting a float to string is not the same as it is in C. Whil
>>>
>>> I also realize that there is `math.inf`, but I argue that the constant
>>> is more fundamental than that, and it still doesn't solve the problem with
>>> `repr()` I described
>>>
>>> Thanks,
>>> ----
>>> *Cade Brown*
>>> Research Assistant @ ICL (Innovative Computing Laboratory)
>>> Personal Email: brown.c...@gmail.com
>>> ICL/College Email: c...@utk.edu
>>>
>>>
>>> _______________________________________________
>>> 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/XMA6KOBLPABV7EL5GV2BIRC2ESYKXMVV/
>>> Code of Conduct: http://python.org/psf/codeofconduct/
>>>
>>
>>
>> --
>> Christopher Barker, PhD
>>
>> Python Language Consulting
>>   - Teaching
>>   - Scientific Software Development
>>   - Desktop GUI and Web Development
>>   - wxPython, numpy, scipy, Cython
>>
> _______________________________________________
> 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/QHOV45S2QN33KLHC5UZH33HA7VJQBXXO/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
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/MT3JOHWCV4FOW6QNREBMVQLO4MN4LJIO/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to