From 6211eb43f9c96715710ec5045055efecccbe3920 Mon Sep 17 00:00:00 2001
From: Alice BRENON <alice.brenon@ens-lyon.fr>
Date: Wed, 17 Jan 2024 09:54:11 +0100
Subject: [PATCH] Propagate Eq and Ord along @ to be able to use composite
 types as keys (typically, ParagraphRecord defined out of ArticleRecord

---
 lib/GEODE/Metadata/Types.hs | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/GEODE/Metadata/Types.hs b/lib/GEODE/Metadata/Types.hs
index e8ff47a..9e7e6f8 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)
 
-- 
GitLab