From 1c6d926840666bf7e18609cefc6031af4a80d385 Mon Sep 17 00:00:00 2001 From: Peter Harpending Date: Sun, 2 Nov 2014 17:18:49 -0700 Subject: [PATCH 1/2] Added Eq and Ord instances for LocalTime. I couldn't get the test suite to build (circular dependencies), else I would have verified my instances against the tests. `cabal build` works, so I figure I couldn't have completely ruined it. The `Eq` instance is a standard `deriving` clause. The `Ord` instance compares the output of `zonedTimeToUTC`, using `UTCTime`'s `Ord` instance. --- lib/Data/Time/LocalTime/LocalTime.hs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/Data/Time/LocalTime/LocalTime.hs b/lib/Data/Time/LocalTime/LocalTime.hs index b32af806..a5703b74 100644 --- a/lib/Data/Time/LocalTime/LocalTime.hs +++ b/lib/Data/Time/LocalTime/LocalTime.hs @@ -22,6 +22,7 @@ import Data.Typeable #if LANGUAGE_Rank2Types import Data.Data #endif +import Data.Ord (comparing) -- | A simple day and time aggregate, where the day is of the specified parameter, -- and the time is a TimeOfDay. @@ -72,13 +73,18 @@ data ZonedTime = ZonedTime { zonedTimeToLocalTime :: LocalTime, zonedTimeZone :: TimeZone } + deriving (Eq #if LANGUAGE_DeriveDataTypeable #if LANGUAGE_Rank2Types #if HAS_DataPico - deriving (Data, Typeable) + , Data, Typeable #endif #endif #endif + ) + +instance Ord ZonedTime where + compare = comparing zonedTimeToUTC instance NFData ZonedTime where rnf (ZonedTime lt z) = lt `deepseq` z `deepseq` () From d9bf1da02672c1c87b9659ba89113176ced979ac Mon Sep 17 00:00:00 2001 From: Peter Harpending Date: Sun, 2 Nov 2014 22:04:53 -0700 Subject: [PATCH 2/2] Fix Eq instance for ZonedTime. --- lib/Data/Time/LocalTime/LocalTime.hs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/Data/Time/LocalTime/LocalTime.hs b/lib/Data/Time/LocalTime/LocalTime.hs index a5703b74..7c3244fb 100644 --- a/lib/Data/Time/LocalTime/LocalTime.hs +++ b/lib/Data/Time/LocalTime/LocalTime.hs @@ -73,15 +73,18 @@ data ZonedTime = ZonedTime { zonedTimeToLocalTime :: LocalTime, zonedTimeZone :: TimeZone } - deriving (Eq #if LANGUAGE_DeriveDataTypeable #if LANGUAGE_Rank2Types #if HAS_DataPico - , Data, Typeable + deriving (Data, Typeable) #endif #endif #endif - ) + +instance Eq ZonedTime where + t1 == t2 = case comparing zonedTimeToUTC t1 t2 of + EQ -> True + _ -> False instance Ord ZonedTime where compare = comparing zonedTimeToUTC