Hi Steve You've suggested that we add to Python an integer NaN object, similar to the already existing float NaN object.
x = float('nan') x, type(x) (nan, <class 'float'>)
I've learnt that decimal also has a NaN object, but not fractions. https://stackoverflow.com/questions/19374254/
from decimal import Decimal y = Decimal('nan') y, type(y) (Decimal('NaN'), <class 'decimal.Decimal'>)
Numpy has its own fixed size int classes
from numpy import int16 x = int16(2358); x, type(x) (2358, <class 'numpy.int16'>) x = x * x; x, type(x) __main__:1: RuntimeWarning: overflow encountered in short_scalars (-10396, <class 'numpy.int16'>)
I'm confident that one could create classes similar to numpy.int16, except that
z = int16('nan') Traceback (most recent call last): ValueError: invalid literal for int() with base 10: 'nan'
would not raise an exception (and would have the semantics you wish for). I wonder, would this be sufficient for the use cases you have in mind? -- Jonathan