]> gitweb.michael.orlitzky.com - mailbox-count.git/commitdiff
src/OptionalConfiguration.hs: use an explicit mappend. 0.0.4
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 2 Feb 2020 17:41:49 +0000 (12:41 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 2 Feb 2020 17:41:49 +0000 (12:41 -0500)
I have a feeling that in older versions of GHC, the Monoid instance
is not smart enough to use an existing Semigroup instance for its
mappend implementation. Let's just make it explicit.

src/OptionalConfiguration.hs

index 16fad069670a8c2d47fb96a5299352889d26dd6f..31aa7f1f7d37566538b3db1dad9a5f9d3e0bd8cb 100644 (file)
@@ -55,26 +55,14 @@ merge_maybes Nothing (Just x)  = Just x
 merge_maybes (Just _) (Just y) = Just y
 
 
--- | The Monoid instance for these lets us "combine" two
---   OptionalConfigurations. The "combine" operation that we'd like to
---   perform is, essentially, to mash them together. So if we have two
+-- | The Semigroup instance for these lets us "combine" two
+--   configurations. The "combine" operation that we'd like to perform
+--   is, essentially, to mash them together. So if we have two
 --   OptionalConfigurations, each half full, we could combine them
 --   into one big one.
 --
 --   This is used to merge command-line and config-file settings.
 --
-instance Monoid OptionalConfiguration where
-  -- | An empty OptionalConfiguration.
-  mempty = OptionalConfiguration
-             Nothing
-             Nothing
-             Nothing
-             Nothing
-             Nothing
-             Nothing
-             Nothing
-             Nothing
-
 instance Semigroup OptionalConfiguration where
   -- | Combine @cfg1@ and @cfg2@, giving precedence to @cfg2@.
   cfg1 <> cfg2 =
@@ -89,6 +77,22 @@ instance Semigroup OptionalConfiguration where
       (merge_maybes (username cfg1) (username cfg2))
 
 
+-- | The Monoid instance essentially only provides the "empty
+--   configuration."
+instance Monoid OptionalConfiguration where
+  -- | An empty OptionalConfiguration.
+  mempty = OptionalConfiguration
+             Nothing
+             Nothing
+             Nothing
+             Nothing
+             Nothing
+             Nothing
+             Nothing
+             Nothing
+  mappend = (<>)
+
+
 -- | Obtain an OptionalConfiguration from mailbox-countrc in either
 --   the global configuration directory or the user's home
 --   directory. The one in $HOME is prefixed by a dot so that it is