module Data.MediaBus.OrderedBy ( OrderedBy(..) ) where import Data.Function (on) data OrderedBy a = MkOrderedBy { orderedByCompare :: a -> a -> Ordering , orderedByValue :: a } instance Eq (OrderedBy a) where l == r = EQ == ((orderedByCompare l `on` orderedByValue) l r) instance Ord (OrderedBy a) where l `compare` r = (orderedByCompare l `on` orderedByValue) l r