shithub: MicroHs

Download patch

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.
 
--