diff --git a/lib/GEODE/Metadata/Types.hs b/lib/GEODE/Metadata/Types.hs index e8ff47afd39f9762f20b337b6bbc4b65cc3e36b6..9e7e6f8706fb35cca065f391f92c964a153df333 100644 --- a/lib/GEODE/Metadata/Types.hs +++ b/lib/GEODE/Metadata/Types.hs @@ -25,6 +25,12 @@ instance Has a b => Has a (b @ c) where instance {-# OVERLAPS #-} Has b (a @ b) where get (_ :@: b) = b +instance (Eq a, Eq b) => Eq (a @ b) where + (a1 :@: b1) == (a2 :@: b2) = a1 == a2 && b1 == b2 + +instance (Ord a, Ord b) => Ord (a @ b) where + (a1 :@: b1) <= (a2 :@: b2) = a1 < a2 || (a1 == a2 && b1 <= b2) + instance (DefaultOrdered a, DefaultOrdered b) => DefaultOrdered (a @ b) where headerOrder _ = headerOrder (undefined :: a) <> headerOrder (undefined :: b)