@@ -44,7 +44,6 @@ data Name =
4444 { _author :: !Name.Name
4545 , _project :: !Name.Name
4646 }
47− deriving (Eq, Ord)
4847
4948
5049data Canonical =
@@ -52,7 +51,7 @@ data Canonical =
5251 { _name :: !Name
5352 , _version :: !V.Version
5453 }
55− deriving (Eq, Ord)
54+ deriving (Ord)
5655
5756
5857
@@ -202,25 +201,35 @@ suggestions =
202201
203202
204203
205−-- BINARY
204+-- INSTANCES
206205
207206
208−instance Binary Name where
209− get =
210− liftM2 Name get get
207+instance Eq Name where
208+ (==) (Name author1 project1) (Name author2 project2) =
209+ project1 == project2 && author1 == author2
211210
212− put (Name author project) =
213− do put author
214− put project
215211
212+instance Eq Canonical where
213+ (==) (Canonical package1 version1) (Canonical package2 version2) =
214+ version1 == version2 && package1 == package2
215+
216+
217+instance Ord Name where
218+ compare (Name author1 project1) (Name author2 project2) =
219+ case compare project1 project2 of
220+ LT -> LT
221+ EQ -> compare author1 author2
222+ GT -> GT
216223
217−instance Binary Canonical where
218− get =
219− liftM2 Canonical get get
220224
221− put (Canonical name version) =
222− do put name
223− put version
225+instance Binary Name where
226+ get = liftM2 Name get get
227+ put (Name a b) = put a >> put b
228+
229+
230+instance Binary Canonical where
231+ get = liftM2 Canonical get get
232+ put (Canonical a b) = put a >> put b
224233
225234
226235