Deriving in that way is more of a question of which breaks more code, I think. Or avoiding breaking code vs. purity arguments, which worry me at least somewhat less because that horse left the stable with Haskell 98 twisting Monad out of shape (granting we're trying to fix at least part of it now), if not earlier. And, well, it's a computer language. "Proper purity" not gonna happen in general, unless the result is a useless toy. But Haskell strives to be usable.
Isn't the Eq vs Ord problem similar to all sub-classes, e.g.
Applicative vs. Monad, Semigroup vs. Monoid, Foldable vs. Traversable?
What is the recommended way of coding? The Traversable module for example
has default implementations of fmap and foldMap, as Functor and Foldable
are superclasses. This suggests it is okay to define the subclass method
first and derive the superclass methods from them. But arguments have been
put up against this practice in particular cases, e.g. for AMP [1].
Olaf
[1] https://mail.haskell.org/pipermail/haskell-cafe/2019-July/131259.html
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.
--