|
Size: 1449
Comment:
|
Size: 2376
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 3: | Line 3: |
| Equality and Coercion could be harmful ====================================== |
Equality using Coercion considered harmful? =========================================== |
| Line 6: | Line 6: |
| The goal of this page is to gather all problems due to equality accepting coercion in borderline cases:: | Currently, Sage specifies that, upon comparing with ``a==b`` two objects `a` and `b` that do not have the same parent, a coercion is attempted to put them in the same parent. To prepare a discussion on whether that specification is viable in the long run, we are gathering here (borderline?) use cases where this behaviour is harmful. :: |
| Line 15: | Line 17: |
| But gathered from Python 2.7 documentation:: | However Python 2.7 documentation specifies:: |
| Line 56: | Line 58: |
| }}} | An example showing that Sage's specifications clashes with Python's specifications ------------------------================------------------------------------------ :: sage: S = SymmetricFunctions(QQ) sage: x = S.s()[5] sage: y = S.p()(x) sage: x == y True sage: hash(x), hash(y) (-1840429907820881728, 5178019317311573726) It's surely syntactically nice to have x == y evaluate True after a coercion. However enforcing that the two hash functions be the same would be simply impossible: this would force to systematically coerce any symmetric function to some fixed base for computing the hash function, and we just can't afford that. |
