diff --git a/Makefile b/Makefile index 73758ddd..93e85a79 100644 --- a/Makefile +++ b/Makefile @@ -198,7 +198,7 @@ MRUNTIME=$(MDATA)/src/runtime MCABALBIN=$(MCABAL)/bin MDIST=dist-mcabal BASE=base-$(VERSION) -BASEMODULES=Control.Applicative Control.Arrow Control.Category Control.DeepSeq Control.Error Control.Exception Control.Monad Control.Monad.Fail Control.Monad.Fix Control.Monad.ST Control.Monad.Zip Data.Array Data.Bits Data.Bool Data.Bounded Data.ByteString Data.Char Data.Complex Data.Constraint Data.Data Data.Double Data.Dynamic Data.Either Data.Enum Data.Eq Data.Float Data.FloatW Data.Floating Data.Foldable Data.Fractional Data.Function Data.Functor Data.Functor.Classes Data.Functor.Compose Data.Functor.Const Data.Functor.Identity Data.Functor.Product Data.Functor.Sum Data.IOArray Data.IORef Data.Int Data.Integer Data.Integral Data.Ix Data.List Data.List.NonEmpty Data.Maybe Data.Monoid Data.Num Data.Ord Data.Proxy Data.Ratio Data.Real Data.RealFloat Data.RealFrac Data.Records Data.STRef Data.Semigroup Data.String Data.Text Data.Time.Clock Data.Time.Format Data.Traversable Data.Tuple Data.Type.Equality Data.TypeLits Data.Typeable Data.Version Data.Void Data.Word Data.ZipList Debug.Trace Foreign.C.String Foreign.C.Types Foreign.ForeignPtr Foreign.Marshal.Alloc Foreign.Marshal.Array Foreign.Marshal.Utils Foreign.Ptr Foreign.Storable GHC.Stack GHC.Types Numeric Numeric.FormatFloat Numeric.Natural Prelude System.Cmd System.Compress System.Directory System.Environment System.Exit System.IO System.IO.MD5 System.IO.PrintOrRun System.IO.Serialize System.IO.TimeMilli System.IO.Unsafe System.Info System.Process Text.Printf Text.ParserCombinators.ReadP Text.ParserCombinators.ReadPrec Text.Read Text.Read.Lex Text.Show TimeCompat Unsafe.Coerce +BASEMODULES=Control.Applicative Control.Arrow Control.Category Control.DeepSeq Control.Error Control.Exception Control.Monad Control.Monad.Fail Control.Monad.Fix Control.Monad.ST Control.Monad.Zip Data.Array Data.Bits Data.Bool Data.Bounded Data.ByteString Data.Char Data.Complex Data.Constraint Data.Data Data.Double Data.Dynamic Data.Either Data.Enum Data.Eq Data.Float Data.FloatW Data.Floating Data.Foldable Data.Foldable1 Data.Fractional Data.Function Data.Functor Data.Functor.Classes Data.Functor.Compose Data.Functor.Const Data.Functor.Identity Data.Functor.Product Data.Functor.Sum Data.IOArray Data.IORef Data.Int Data.Integer Data.Integral Data.Ix Data.List Data.List.NonEmpty Data.Maybe Data.Monoid Data.Num Data.Ord Data.Proxy Data.Ratio Data.Real Data.RealFloat Data.RealFrac Data.Records Data.STRef Data.Semigroup Data.String Data.Text Data.Time.Clock Data.Time.Format Data.Traversable Data.Tuple Data.Type.Equality Data.TypeLits Data.Typeable Data.Version Data.Void Data.Word Data.ZipList Debug.Trace Foreign.C.String Foreign.C.Types Foreign.ForeignPtr Foreign.Marshal.Alloc Foreign.Marshal.Array Foreign.Marshal.Utils Foreign.Ptr Foreign.Storable GHC.Stack GHC.Types Numeric Numeric.FormatFloat Numeric.Natural Prelude System.Cmd System.Compress System.Directory System.Environment System.Exit System.IO System.IO.MD5 System.IO.PrintOrRun System.IO.Serialize System.IO.TimeMilli System.IO.Unsafe System.Info System.Process Text.Printf Text.ParserCombinators.ReadP Text.ParserCombinators.ReadPrec Text.Read Text.Read.Lex Text.Show TimeCompat Unsafe.Coerce $(MCABALBIN)/mhs: bin/mhs @mkdir -p $(MCABALBIN) diff --git a/lib/AllOfLib.hs b/lib/AllOfLib.hs index faa25f5a..4bb7d5cc 100644 --- a/lib/AllOfLib.hs +++ b/lib/AllOfLib.hs @@ -28,6 +28,7 @@ import Data.Eq import Data.FloatW import Data.Floating import Data.Foldable +import Data.Foldable1 import Data.Fractional import Data.Function import Data.Functor @@ -51,6 +52,7 @@ import Data.List_Type import Data.Maybe import Data.Maybe_Type import Data.Monoid +import Data.Monoid.Internal import Data.Num import Data.Ord import Data.Orphans diff --git a/lib/Control/Monad.hs b/lib/Control/Monad.hs index 04aab1fb..c1581bc3 100644 --- a/lib/Control/Monad.hs +++ b/lib/Control/Monad.hs @@ -43,7 +43,7 @@ import Data.Char_Type import Data.Function import Data.Functor import Data.List -import Data.Monoid +import Data.Monoid.Internal import Data.Ord --import Data.Maybe diff --git a/lib/Control/Monad/Fix.hs b/lib/Control/Monad/Fix.hs index 8ea7f634..ffbb894f 100644 --- a/lib/Control/Monad/Fix.hs +++ b/lib/Control/Monad/Fix.hs @@ -5,7 +5,7 @@ module Control.Monad.Fix( import Control.Monad import Data.Function(fix) import Data.List.NonEmpty(NonEmpty(..)) -import Data.Monoid +import Data.Monoid.Internal import Data.Tuple class (Monad m) => MonadFix m where diff --git a/lib/Control/Monad/Zip.hs b/lib/Control/Monad/Zip.hs index 8b80f679..64df7f48 100644 --- a/lib/Control/Monad/Zip.hs +++ b/lib/Control/Monad/Zip.hs @@ -17,20 +17,9 @@ ----------------------------------------------------------------------------- module Control.Monad.Zip where -{- -import GHC.Internal.Control.Monad (liftM, liftM2) -import GHC.Internal.Data.Functor.Identity -import qualified GHC.Internal.Data.Functor -import GHC.Internal.Data.Monoid -import GHC.Internal.Data.Ord ( Down(..) ) -import GHC.Internal.Data.Proxy -import GHC.Generics -import GHC.Tuple (Solo (..)) -import Prelude --} import Control.Monad import Data.Functor.Identity -import Data.Monoid +import Data.Monoid.Internal import qualified Data.List.NonEmpty as NE --import Data.Tuple diff --git a/lib/Data/ByteString.hs b/lib/Data/ByteString.hs index fbbf6c67..48ffb37e 100644 --- a/lib/Data/ByteString.hs +++ b/lib/Data/ByteString.hs @@ -159,7 +159,7 @@ import qualified Prelude as P import qualified Data.List as P import Data.List.NonEmpty(NonEmpty, fromList) import Data.Bits -import Data.Monoid +import Data.Monoid.Internal import Data.Semigroup import Data.String import Data.Word(Word8) diff --git a/lib/Data/Foldable.hs b/lib/Data/Foldable.hs index c8a72f06..4d2af246 100644 --- a/lib/Data/Foldable.hs +++ b/lib/Data/Foldable.hs @@ -56,10 +56,10 @@ import Data.List_Type hiding (concatMap) import qualified Data.List as List import Data.Maybe import Data.Monoid +import Data.Monoid.Internal import Data.Num import Data.Ord import Data.Proxy -import Data.Semigroup newtype MMax a = MMax (Maybe a) getMMax :: forall a . MMax a -> Maybe a diff --git a/lib/Data/Functor/Compose.hs b/lib/Data/Functor/Compose.hs index 508566d4..1cedbba6 100644 --- a/lib/Data/Functor/Compose.hs +++ b/lib/Data/Functor/Compose.hs @@ -31,7 +31,7 @@ import Control.Applicative import Data.Data (Data) import Data.Foldable (Foldable(..)) import Data.Functor.Classes -import Data.Monoid +import Data.Monoid.Internal import Data.Traversable --import Data.Type.Equality (TestEquality(..), (:~:)(..)) --import GHC.Generics (Generic, Generic1) diff --git a/lib/Data/Functor/Const.hs b/lib/Data/Functor/Const.hs index c8b9e4e3..745dcc5d 100644 --- a/lib/Data/Functor/Const.hs +++ b/lib/Data/Functor/Const.hs @@ -11,7 +11,7 @@ import Data.Function import Data.Functor import Data.Functor.Const_Type import Data.Int -import Data.Monoid +import Data.Monoid.Internal import Data.Ord import Text.Show diff --git a/lib/Data/List.hs b/lib/Data/List.hs index 792dd3d9..27749f62 100644 --- a/lib/Data/List.hs +++ b/lib/Data/List.hs @@ -39,10 +39,9 @@ import Data.Int import Data.Integral import Data.List_Type import Data.Maybe_Type -import Data.Monoid +import Data.Monoid.Internal import Data.Num import Data.Ord -import Data.Semigroup import Data.Tuple --import Text.Read import Text.Show diff --git a/lib/Data/List/NonEmpty.hs b/lib/Data/List/NonEmpty.hs index 26e63d42..ebc2686f 100644 --- a/lib/Data/List/NonEmpty.hs +++ b/lib/Data/List/NonEmpty.hs @@ -116,7 +116,7 @@ import Data.List_Type import Data.List.NonEmpty_Type import Data.Num import Data.Maybe -import Data.Monoid +import Data.Monoid.Internal import Data.Ord import Data.Traversable import Data.Tuple diff --git a/lib/Data/Maybe.hs b/lib/Data/Maybe.hs index 13e7f0b5..77dfbb02 100644 --- a/lib/Data/Maybe.hs +++ b/lib/Data/Maybe.hs @@ -15,9 +15,8 @@ import Data.Functor import Data.Int import Data.List import Data.Maybe_Type -import Data.Monoid +import Data.Monoid.Internal import Data.Ord -import Data.Semigroup import Text.Show instance forall a . Eq a => Eq (Maybe a) where diff --git a/lib/Data/Monoid.hs b/lib/Data/Monoid.hs index 36944301..72482086 100644 --- a/lib/Data/Monoid.hs +++ b/lib/Data/Monoid.hs @@ -1,134 +1,24 @@ -module Data.Monoid(module Data.Monoid) where -import Prelude() -- do not import Prelude -import Primitives -import Control.Applicative -import Control.Error -import Data.Bool -import Data.Bounded -import Data.Eq -import Data.Function -import Data.Functor -import Data.Int -import Data.Integral -import Data.List_Type -import Data.List.NonEmpty_Type -import Data.Ord +module Data.Monoid( + Monoid(..), + Endo(..), appEndo, + Dual(..), getDual, + Max(..), getMax, + Min(..), getMin, + Sum(..), getSum, + Product(..), getProduct, + All(..), getAll, + Any(..), getAny, + Arg(..), ArgMin, ArgMax, + Alt(..), getAlt, + First(..), getFirst, + Last(..), getLast, + ) where +import Prelude() import Data.Maybe_Type -import Data.Num -import Text.Show +import Data.Monoid.Internal -class Semigroup a => Monoid a where - mempty :: a - mappend :: a -> a -> a - mappend = (<>) - mconcat :: [a] -> a - mconcat [] = mempty - mconcat (a:as) = a <> mconcat as - ---------------------- - -newtype Endo a = Endo (a -> a) -appEndo :: forall a . Endo a -> (a -> a) -appEndo (Endo f) = f - -instance forall a . Semigroup (Endo a) where - Endo f <> Endo g = Endo (f . g) - -instance forall a . Monoid (Endo a) where - mempty = Endo id - ---------------------- - -newtype Dual a = Dual a -getDual :: forall a . Dual a -> a -getDual (Dual a) = a - -instance forall a . Semigroup a => Semigroup (Dual a) where - Dual a <> Dual b = Dual (b <> a) - -instance forall a . Monoid a => Monoid (Dual a) where - mempty = Dual mempty - -instance Functor Dual where - fmap f (Dual a) = Dual (f a) - -instance Applicative Dual where - pure = Dual - Dual f <*> Dual b = Dual (f b) - ---------------------- - -newtype Max a = Max a -getMax :: forall a . Max a -> a -getMax (Max a) = a - -instance forall a . Ord a => Semigroup (Max a) where - Max a <> Max b = Max (a `max` b) - -instance forall a . (Ord a, Bounded a) => Monoid (Max a) where - mempty = Max minBound - ---------------------- - -newtype Min a = Min a -getMin :: forall a . Min a -> a -getMin (Min a) = a - -instance forall a . Ord a => Semigroup (Min a) where - Min a <> Min b = Min (a `min` b) - -instance forall a . (Ord a, Bounded a) => Monoid (Min a) where - mempty = Min maxBound - ---------------------- - -newtype Sum a = Sum a -getSum :: forall a . Sum a -> a -getSum (Sum a) = a - -instance forall a . Num a => Semigroup (Sum a) where - Sum a <> Sum b = Sum (a + b) - -instance forall a . (Num a) => Monoid (Sum a) where - mempty = Sum 0 - ---------------------- - -newtype Product a = Product a -getProduct :: forall a . Product a -> a -getProduct (Product a) = a - -instance forall a . Num a => Semigroup (Product a) where - Product a <> Product b = Product (a * b) - -instance forall a . (Num a) => Monoid (Product a) where - mempty = Product 1 - ---------------------- - -newtype All = All Bool -getAll :: All -> Bool -getAll (All a) = a - -instance Semigroup All where - All a <> All b = All (a && b) - -instance Monoid All where - mempty = All True - ---------------------- - -newtype Any = Any Bool -getAny :: Any -> Bool -getAny (Any a) = a - -instance Semigroup Any where - Any a <> Any b = Any (a || b) - -instance Monoid Any where - mempty = Any False - ---------------------- +-- First and Last are different in Monoid and Semigroup, +-- so put them here. newtype First a = First (Maybe a) getFirst :: forall a . First a -> Maybe a @@ -141,7 +31,6 @@ instance forall a . Semigroup (First a) where instance forall a . Monoid (First a) where mempty = First Nothing ---------------------- newtype Last a = Last (Maybe a) getLast :: forall a . Last a -> Maybe a @@ -153,122 +42,3 @@ instance forall a . Semigroup (Last a) where instance forall a . Monoid (Last a) where mempty = Last Nothing - ---------------------- - -instance Semigroup Ordering where - LT <> _ = LT - EQ <> o = o - GT <> _ = GT - -instance Monoid Ordering where - mempty = EQ - ----------------------- - -data Arg a b = Arg a b - deriving(Show) - -type ArgMin a b = Min (Arg a b) - -type ArgMax a b = Max (Arg a b) - -instance Functor (Arg a) where - fmap f (Arg x a) = Arg x (f a) - -instance Eq a => Eq (Arg a b) where - Arg a _ == Arg b _ = a == b - -instance Ord a => Ord (Arg a b) where - Arg a _ `compare` Arg b _ = compare a b - min x@(Arg a _) y@(Arg b _) - | a <= b = x - | otherwise = y - max x@(Arg a _) y@(Arg b _) - | a >= b = x - | otherwise = y - ----------------------- - -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. - -infixr 6 <> -class Semigroup a where - (<>) :: a -> a -> a - sconcat :: NonEmpty a -> a - stimes :: (Integral b, Ord b) => b -> a -> a - - sconcat (a :| as) = go a as - where go b (c:cs) = b <> go c cs - go b [] = b - - stimes y0 x0 - | y0 <= 0 = error "stimes: positive multiplier expected" - | otherwise = f x0 y0 - where - f x y - | y `rem` 2 == 0 = f (x <> x) (y `quot` 2) - | y == 1 = x - | otherwise = g (x <> x) (y `quot` 2) x - g x y z - | y `rem` 2 == 0 = g (x <> x) (y `quot` 2) z - | y == 1 = x <> z - | otherwise = g (x <> x) (y `quot` 2) (x <> z) - -stimesIdempotent :: (Integral b, Ord b) => b -> a -> a -stimesIdempotent n x = - if n <= 0 then error "stimesIdempotent: positive multiplier expected" - else x - -stimesIdempotentMonoid :: (Ord b, Integral b, Monoid a) => b -> a -> a -stimesIdempotentMonoid n x = case compare n 0 of - LT -> error "stimesIdempotentMonoid: negative multiplier" - EQ -> mempty - GT -> x - -stimesMonoid :: (Ord b, Integral b, Monoid a) => b -> a -> a -stimesMonoid n x0 = case compare n 0 of - LT -> error "stimesMonoid: negative multiplier" - EQ -> mempty - GT -> f x0 n - where - f x y - | even y = f (x `mappend` x) (y `quot` 2) - | y == 1 = x - | otherwise = g (x `mappend` x) (y `quot` 2) x - g x y z - | even y = g (x `mappend` x) (y `quot` 2) z - | y == 1 = x `mappend` z - | otherwise = g (x `mappend` x) (y `quot` 2) (x `mappend` z) - diff --git a/lib/Data/Semigroup.hs b/lib/Data/Semigroup.hs index cbcd79f0..7be88ab6 100644 --- a/lib/Data/Semigroup.hs +++ b/lib/Data/Semigroup.hs @@ -1,6 +1,154 @@ module Data.Semigroup( - module Data.Monoid, + Semigroup(..), + Endo(..), appEndo, + Dual(..), getDual, + Max(..), getMax, + Min(..), getMin, + Sum(..), getSum, + Product(..), getProduct, + All(..), getAll, + Any(..), getAny, + Arg(..), ArgMin, ArgMax, + Alt(..), getAlt, + First(..), getFirst, + Last(..), getLast, + stimesIdempotent, stimesIdempotentMonoid, stimesMonoid, ) where import Prelude() -- do not import Prelude -import Data.Monoid hiding(Monoid(..)) --- Data.Monoid contains the definition of Semigroup +import Data.Bool +import Data.Bounded +import Data.Eq +import Data.Function +import Data.List.NonEmpty_Type +import Data.Ord +import Data.Monoid.Internal +import Text.Show + +{- +newtype First a = First { getFirst :: a } + deriving ( Bounded -- ^ @since 4.9.0.0 + , Eq -- ^ @since 4.9.0.0 + , Ord -- ^ @since 4.9.0.0 + , Show -- ^ @since 4.9.0.0 + , Read -- ^ @since 4.9.0.0 + , Data -- ^ @since 4.9.0.0 + , Generic -- ^ @since 4.9.0.0 + , Generic1 -- ^ @since 4.9.0.0 + ) + +instance Enum a => Enum (First a) where + succ (First a) = First (succ a) + pred (First a) = First (pred a) + toEnum = First . toEnum + fromEnum = fromEnum . getFirst + enumFrom (First a) = First `fmap` enumFrom a + enumFromThen (First a) (First b) = First `fmap` enumFromThen a b + enumFromTo (First a) (First b) = First `fmap` enumFromTo a b + enumFromThenTo (First a) (First b) (First c) = First `fmap` enumFromThenTo a b c +-} + +newtype First a = First a + deriving(Eq, Ord, Show, Bounded) +getFirst :: First a -> a +getFirst (First a) = a + +instance Semigroup (First a) where + a <> _ = a + stimes = stimesIdempotent + sconcat (x :| _) = x + +{- +-- | @since 4.9.0.0 +instance Functor First where + fmap f (First x) = First (f x) + +-- | @since 4.9.0.0 +instance Foldable First where + foldMap f (First a) = f a + +-- | @since 4.9.0.0 +instance Traversable First where + traverse f (First a) = First `fmap` f a + +-- | @since 4.9.0.0 +instance Applicative First where + pure x = First x + a <* _ = a + _ *> a = a + (<*>) = coerce + liftA2 = coerce + +-- | @since 4.9.0.0 +instance Monad First where + (>>) = (*>) + First a >>= f = f a + +-- | @since 4.9.0.0 +instance MonadFix First where + mfix f = fix (f . getFirst) +-} + +{- +newtype Last a = Last { getLast :: a } + deriving ( Bounded -- ^ @since 4.9.0.0 + , Eq -- ^ @since 4.9.0.0 + , Ord -- ^ @since 4.9.0.0 + , Show -- ^ @since 4.9.0.0 + , Read -- ^ @since 4.9.0.0 + , Data -- ^ @since 4.9.0.0 + , Generic -- ^ @since 4.9.0.0 + , Generic1 -- ^ @since 4.9.0.0 + ) + +-- | @since 4.9.0.0 +instance Enum a => Enum (Last a) where + succ (Last a) = Last (succ a) + pred (Last a) = Last (pred a) + toEnum = Last . toEnum + fromEnum = fromEnum . getLast + enumFrom (Last a) = Last `fmap` enumFrom a + enumFromThen (Last a) (Last b) = Last `fmap` enumFromThen a b + enumFromTo (Last a) (Last b) = Last `fmap` enumFromTo a b + enumFromThenTo (Last a) (Last b) (Last c) = Last `fmap` enumFromThenTo a b c +-} + +newtype Last a = Last a + deriving(Eq, Ord, Show, Bounded) +getLast :: Last a -> a +getLast (Last a) = a + +instance Semigroup (Last a) where + _ <> b = b + stimes = stimesIdempotent + +{- +-- | @since 4.9.0.0 +instance Functor Last where + fmap f (Last x) = Last (f x) + a <$ _ = Last a + +-- | @since 4.9.0.0 +instance Foldable Last where + foldMap f (Last a) = f a + +-- | @since 4.9.0.0 +instance Traversable Last where + traverse f (Last a) = Last `fmap` f a + +-- | @since 4.9.0.0 +instance Applicative Last where + pure = Last + a <* _ = a + _ *> a = a + (<*>) = coerce + liftA2 = coerce + +-- | @since 4.9.0.0 +instance Monad Last where + (>>) = (*>) + Last a >>= f = f a + +-- | @since 4.9.0.0 +instance MonadFix Last where + mfix f = fix (f . getLast) +-} diff --git a/lib/Data/Text.hs b/lib/Data/Text.hs index 9cbd895e..1e94ca73 100644 --- a/lib/Data/Text.hs +++ b/lib/Data/Text.hs @@ -6,8 +6,7 @@ module Data.Text( head, ) where import Prelude(); import MiniPrelude hiding(head) -import Data.Monoid -import Data.Semigroup +import Data.Monoid.Internal import Data.String import qualified Data.ByteString.Internal as BS diff --git a/lib/Data/Traversable.hs b/lib/Data/Traversable.hs index 66871d35..77e3b6b3 100644 --- a/lib/Data/Traversable.hs +++ b/lib/Data/Traversable.hs @@ -43,7 +43,7 @@ import Data.Functor.Identity import Data.List_Type import qualified Data.List as List import Data.Maybe -import Data.Monoid +import Data.Monoid.Internal import Data.Proxy --import Data.Ord ( Down(..) ) --import Data.Proxy ( Proxy(..) ) diff --git a/lib/Data/Tuple.hs b/lib/Data/Tuple.hs index 7d886821..97d2c0a1 100644 --- a/lib/Data/Tuple.hs +++ b/lib/Data/Tuple.hs @@ -11,9 +11,8 @@ import Data.Bounded import Data.Eq import Data.Function import Data.Int -import Data.Monoid +import Data.Monoid.Internal import Data.Ord -import Data.Semigroup import Text.Show --data (a,b) = (a,b) -- all tuples are built in diff --git a/lib/MiniPrelude.hs b/lib/MiniPrelude.hs index cc2c3a06..8b3a53de 100644 --- a/lib/MiniPrelude.hs +++ b/lib/MiniPrelude.hs @@ -14,7 +14,7 @@ module MiniPrelude( module Data.Integral, module Data.List, module Data.Maybe, - module Data.Monoid, + module Data.Monoid.Internal, module Data.Num, module Data.Records, module Data.String, @@ -45,7 +45,7 @@ import Data.List([](..), map, (++), filter, head, last, tail, init, null, length elem, notElem, lookup, zip, zip3, zipWith, zipWith3, unzip, unzip3, lines, words, unlines, unwords) import Data.Maybe -import Data.Monoid +import Data.Monoid.Internal import Data.Num import Data.Records import Data.String diff --git a/lib/Text/ParserCombinators/ReadP.hs b/lib/Text/ParserCombinators/ReadP.hs index 1ebd31dd..edda7909 100644 --- a/lib/Text/ParserCombinators/ReadP.hs +++ b/lib/Text/ParserCombinators/ReadP.hs @@ -86,11 +86,8 @@ import Data.Int import Data.Num import Data.List import Data.List.NonEmpty -import Data.Monoid -{- -import Data.List ( replicate, null ) -import Control.Monad.Fail --} +import Data.Monoid.Internal + infixr 5 +++, <++ ------------------------------------------------------------------------