ref: aa4a7a2d37d6fdfc5b778626be10308333589243
parent: d4dea2defccb349c3a6833bcd10ebf16c6cea49d
author: Lennart Augustsson <lennart@augustsson.net>
date: Sun Sep 22 06:46:53 EDT 2024
Add missing Alt.
--- a/lib/Data/Monoid.hs
+++ b/lib/Data/Monoid.hs
@@ -190,6 +190,36 @@
----------------------
+newtype Alt f a = Alt (f a)
+ deriving (Show)
+getAlt :: Alt f a -> f a
+getAlt (Alt x) = x
+{-
+ deriving ( Generic -- ^ @since base-4.8.0.0
+ , Generic1 -- ^ @since base-4.8.0.0
+ , Read -- ^ @since base-4.8.0.0
+ , Show -- ^ @since base-4.8.0.0
+ , Eq -- ^ @since base-4.8.0.0
+ , Ord -- ^ @since base-4.8.0.0
+ , Num -- ^ @since base-4.8.0.0
+ , Enum -- ^ @since base-4.8.0.0
+ , Monad -- ^ @since base-4.8.0.0
+ , MonadPlus -- ^ @since base-4.8.0.0
+ , Applicative -- ^ @since base-4.8.0.0
+ , Alternative -- ^ @since base-4.8.0.0
+ , Functor -- ^ @since base-4.8.0.0
+ )
+-}
+
+instance Alternative f => Semigroup (Alt f a) where
+ Alt x <> Alt y = Alt (x <|> y)
+ stimes = stimesMonoid
+
+instance Alternative f => Monoid (Alt f a) where
+ mempty = Alt empty
+
+----------------------
+
-- This really belongs in Data.Semigroup,
-- but some functions have Monoid as in the context.
--
⑨