#15904: Defining __eq__ without defining __ne__ or __cmp__: sage/combinat
-------------------------+-------------------------------------------------
   Reporter:  darij      |            Owner:
       Type:  defect     |           Status:  new
   Priority:  major      |        Milestone:  sage-6.2
  Component:             |         Keywords:  sage-combinat, equality,
  combinatorics          |  inheritance
  Merged in:             |          Authors:
  Reviewers:             |  Report Upstream:  N/A
Work issues:             |           Branch:
     Commit:             |     Dependencies:
   Stopgaps:             |
-------------------------+-------------------------------------------------
 I think one should always at least one of `__ne__` and `__cmp__` on a
 class when one defines `__eq__`, unless one really wants to have `!=` to
 behave differently from the negation of `==` (or one is happy with the
 `__ne__` inherited from the superclass; but then why would one redefine
 `__eq__` to begin with?):

 {{{
 sage: ContreTableaux(4) == ContreTableaux(4)
 True
 sage: ContreTableaux(4) != ContreTableaux(4)
 True
 }}}

 or also (here the `!=` is inherited from `CombinatorialObject`):

 {{{
 sage: Core([1,1],3) != Core([1,1],4)
 False
 sage: Core([1,1],3) == Core([1,1],4)
 False
 }}}

 Here is a result of searching for this antipattern in the sage/combinat
 subfolder:
 https://www.dropbox.com/s/lca1yfw1qsz6ycy/ne.txt
 Some of these do define `__cmp__`, but redefining `__ne__` might lead to a
 speedup, so I kept them in the file even if these are not bugs per se.

 Should we just fix them all robotically?

--
Ticket URL: <http://trac.sagemath.org/ticket/15904>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to