On Wed, Mar 4, 2020 at 11:23 AM Mark Dickinson <dickinsm@gmail.com> wrote:
So Decimal is totally orderable to exactly the same extent that float is. (Though the behaviour with NaNs is a little more extreme, since comparisons involving sNaNs will raise rather than return False.) I'd argue that on a practicality-beats-purity basis, it wouldn't be unreasonable to register both `Decimal` and `float` as implementing `TotalOrdering` (or whatever the ABC ends up being called).
I do not disagree on the practicality-beats-purity point. But the "failure" modes are different between Decimal and float. Technically, Decimal objects themselves are total ordered, but an expression as simple as "+x" creates a different decimal object that depends on context... and I can very easily see folks tripping on that with expected order properties. Floats a total ordered *if you ignore a bunch of them* (the NaNs, which are easy to arrive at by a variety of operations on other floats). That said, I still haven't actually seen a real use case where we need TotalOrdered as an ABC. I love mathematical concepts as much as the next person, but what are we actually trying to get in our programs? -- Keeping medicines from the bloodstreams of the sick; food from the bellies of the hungry; books from the hands of the uneducated; technology from the underdeveloped; and putting advocates of freedom in prisons. Intellectual property is to the 21st century what the slave trade was to the 16th.