On Sat, Sep 18, 2021 at 03:50:00PM -0700, Christopher Barker wrote:

> Folks are not surprised by:
> 
> >> 2 * 3 == [2] * 3
> 
> False
> 
> Because 2 is not only a different type than [2] but because they are
> different values as well.

What counts as a value? In some programming languages, 2.0 != 2 and I 
can't say that they are wrong to make that decision.

Given:

     a, = [2]
     b, = (2,)

then clearly a==b. In that sense, we can say that the two sequences 
have the same value. But:

    [2] != (2,)
    [2]*5 != (2,)*5

so in Python, the concept of "same value" does depend on type.

Numeric types are an exception, because they are automatically coerced 
to a common type. And that's a mixed benefit. It means that we have to 
deal with surprises like this:

    >>> 1234567890123456789 == 1234567890123456789.0
    False

Even more surprising:

    >>> x = 1234567890123456789
    >>> x == x + 0
    True
    >>> x == x + 0.0
    False

I still think that there is little or no justification for having 
factorial automatically delegate to gamma *in Python*, but there are 
languages where it would work. In the right circumstances, it works 
fine. It's not a dumb idea.

For instance, in Javascript, there is no int type, everything is a 
float. So in Javascript, there is no question that factorial(65) will 
unquestionably equal factorial(65.0), and that it would be perfectly 
safe to have factorial take fractional values and compute the gamma 
function.

Similarly for the various calculator languages used in advanced 
programmable calculators, where it is the case that fractional arguments 
to factorial return the gamma function.

(Possibly in symbolic form.)



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

Reply via email to