+1 on what Nils said; I only find it slightly surprising initially. Compare this with comparing a list to a Partition as well. Equality is a bit different as a programming concept than a mathematical one. When you implement a custom __eq__, then you are separating that class from the coercion-based equality.
+1 on removing the parent from the hash of ClonableArray and its family tree. Best, Travis On Tuesday, December 13, 2022 at 1:56:46 AM UTC+9 Nils Bruin wrote: > On Monday, 12 December 2022 at 00:22:30 UTC-8 axio...@yahoo.de wrote: > >> Ah, thank you so much! >> >> Just to make sure that I understand the philosophy: if two elements are >> supposed to compare equal, they should have parents which can be coerced to >> a common parent, right? For example, the following (which is current >> behaviour) is not really what we want: >> >> sage: A = SetPartitions(3)([[1,2],[3]]) >> sage: B = SetPartition([[1,2],[3]]) >> sage: A == B >> True >> sage: coercion_model.common_parent(A, B) >> > TypeError: no common canonical parent for objects with parents: 'Set >> partitions of {1, 2, 3}' and 'Set partitions' >> > >> I think that is a bit surprising, but if SetPartitions don't really occur > much in binary operations I think it will be a hardly visible quirk. One > has to be careful generalizing principles about how to implement > coercion/equality/hashing because we a;ready know that some of the things > we want lead to inconsistencies. > > When in doubt, the safe thing is definitely to NOT install coercions (it > can always be done later), so I'd hesitate to recommend to change the > behaviour above. I think you'd want at least a practical use case to > justify it. > > Note that the relevant conversions: A.parent()(B) and B.parent()(A) do > work. > > It seems to me the converse implication, if for two elements the coercion > framework is happy to find a common parent in which they compare equal, > then they should be equal in the first place, sounds a little more > probable, but I suspect one can get problematic situations from that too. > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/b91b40db-760e-4df4-bbb8-7e1c144f9f56n%40googlegroups.com.