With the signature of 'compare' we can hardly do it better. That's why it is certainly better to leave Ord for total orderings and define class PartialOrd a where maybeCompare :: a -> a -> Maybe Ordering