]> gitweb.michael.orlitzky.com - list-remote-forwards.git/commitdiff
src/OptionalConfiguration.hs: add Semigroup instance.
authorMichael Orlitzky <michael@orlitzky.com>
Wed, 24 Aug 2022 12:01:40 +0000 (08:01 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Wed, 24 Aug 2022 12:01:40 +0000 (08:01 -0400)
...Now that Semigroup is a superclass of Monoid.

src/OptionalConfiguration.hs

index 072f25beafc4cfd3ffd1b3b4e0c62e43edaa9943..3dc26bdccc94dbc65ff3bb26527e9bb026c15d5d 100644 (file)
@@ -58,7 +58,7 @@ merge_maybes Nothing (Just x)  = Just x
 merge_maybes (Just _) (Just y) = Just y
 
 
--- | The Monoid instance for these lets us "combine" two
+-- | The Semigroup 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
 --   OptionalConfigurations, each half full, we could combine them
@@ -66,20 +66,10 @@ merge_maybes (Just _) (Just y) = Just y
 --
 --   This is used to merge command-line and config-file settings.
 --
-instance Monoid OptionalConfiguration where
-  -- | An empty OptionalConfiguration.
-  mempty = OptionalConfiguration
-             Nothing
-             Nothing
-             (MxList [])
-             Nothing
-             Nothing
-             Nothing
-             Nothing
-             Nothing
 
+instance Semigroup OptionalConfiguration where
   -- | Combine @cfg1@ and @cfg2@, giving precedence to @cfg2@.
-  cfg1 `mappend` cfg2 =
+  cfg1 <> cfg2 =
     OptionalConfiguration
       (merge_maybes (database cfg1) (database cfg2))
       (merge_maybes (domain_query cfg1) (domain_query cfg2))
@@ -96,6 +86,21 @@ instance Monoid OptionalConfiguration where
                      then cfg1
                      else cfg2
 
+-- | The Monoid instance essentially only provides the "empty
+--   configuration."
+instance Monoid OptionalConfiguration where
+  -- | An empty OptionalConfiguration.
+  mempty = OptionalConfiguration
+             Nothing
+             Nothing
+             (MxList [])
+             Nothing
+             Nothing
+             Nothing
+             Nothing
+             Nothing
+  mappend = (<>)
+
 
 -- | Obtain an OptionalConfiguration from list-remote-forwardsrc in
 --   either the global configuration directory or the user's home