From 7b8ea03caeba7c586d9e79a5ec4f522e8cd266da Mon Sep 17 00:00:00 2001 From: Max Ulidtko Date: Fri, 8 Sep 2023 18:13:44 +0200 Subject: [PATCH] Optimise instance Ord of SourcePos See issue #171. Co-Authored-By: Matt Parsons --- src/Text/Parsec/Pos.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Text/Parsec/Pos.hs b/src/Text/Parsec/Pos.hs index 02a7b213..a1db74bd 100644 --- a/src/Text/Parsec/Pos.hs +++ b/src/Text/Parsec/Pos.hs @@ -41,7 +41,12 @@ type Column = Int -- 'Ord' class. data SourcePos = SourcePos SourceName !Line !Column - deriving ( Eq, Ord, Data, Typeable) + deriving (Eq, Data, Typeable) + +-- | The ordering compares first by line, column, then by sourcename. +instance Ord SourcePos where + compare (SourcePos snA lnA colA) (SourcePos snB lnB colB) + = lnA `compare` lnB <> colA `compare` colB <> snA `compare` snB -- | Create a new 'SourcePos' with the given source name, -- line number and column number.