Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-monoid-subclasses for 
openSUSE:Factory checked in at 2023-09-04 22:53:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-monoid-subclasses (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-monoid-subclasses.new.1766 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-monoid-subclasses"

Mon Sep  4 22:53:48 2023 rev:3 rq:1108869 version:1.2.4

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/ghc-monoid-subclasses/ghc-monoid-subclasses.changes  
    2023-04-07 18:16:49.176715923 +0200
+++ 
/work/SRC/openSUSE:Factory/.ghc-monoid-subclasses.new.1766/ghc-monoid-subclasses.changes
    2023-09-04 22:54:36.289936362 +0200
@@ -1,0 +2,9 @@
+Fri Sep  1 02:48:20 UTC 2023 - Peter Simons <[email protected]>
+
+- Update monoid-subclasses to version 1.2.4.
+  Upstream has edited the change log file since the last release in
+  a non-trivial way, i.e. they did more than just add a new entry
+  at the top. You can review the file at:
+  http://hackage.haskell.org/package/monoid-subclasses-1.2.4/src/CHANGELOG.md
+
+-------------------------------------------------------------------

Old:
----
  monoid-subclasses-1.2.3.tar.gz

New:
----
  monoid-subclasses-1.2.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-monoid-subclasses.spec ++++++
--- /var/tmp/diff_new_pack.aVbkYz/_old  2023-09-04 22:54:37.277971287 +0200
+++ /var/tmp/diff_new_pack.aVbkYz/_new  2023-09-04 22:54:37.281971429 +0200
@@ -20,7 +20,7 @@
 %global pkgver %{pkg_name}-%{version}
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        1.2.3
+Version:        1.2.4
 Release:        0
 Summary:        Subclasses of Monoid
 License:        BSD-3-Clause

++++++ monoid-subclasses-1.2.3.tar.gz -> monoid-subclasses-1.2.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/monoid-subclasses-1.2.3/CHANGELOG.md 
new/monoid-subclasses-1.2.4/CHANGELOG.md
--- old/monoid-subclasses-1.2.3/CHANGELOG.md    2001-09-09 03:46:40.000000000 
+0200
+++ new/monoid-subclasses-1.2.4/CHANGELOG.md    2001-09-09 03:46:40.000000000 
+0200
@@ -1,11 +1,14 @@
+Version 1.2.4
+---------------
+* Added `Data.Monoid.Instances.PrefixMemory.Shadowed` monoid transformer
 Version 1.2.3
 ---------------
-* Add `DistributiveGCDMonoid` and `DistributiveLCMMonoid` type class by 
Jonathan Knowles
+* Added `DistributiveGCDMonoid` and `DistributiveLCMMonoid` type class by 
Jonathan Knowles
 
 Version 1.2.2
 ---------------
-* Add `Data.Monoid.LCM` module with `LCMMonoid` type class by Jonathan Knowles
-* Repair links to Hackage within `README.md` by Jonathan Knowles
+* Added `Data.Monoid.LCM` module with `LCMMonoid` type class by Jonathan 
Knowles
+* Repaired links to Hackage within `README.md` by Jonathan Knowles
 
 Version 1.2.1
 ---------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/monoid-subclasses-1.2.3/Test/TestMonoidSubclasses.hs 
new/monoid-subclasses-1.2.4/Test/TestMonoidSubclasses.hs
--- old/monoid-subclasses-1.2.3/Test/TestMonoidSubclasses.hs    2001-09-09 
03:46:40.000000000 +0200
+++ new/monoid-subclasses-1.2.4/Test/TestMonoidSubclasses.hs    2001-09-09 
03:46:40.000000000 +0200
@@ -10,7 +10,11 @@
 
 module Main where
 
-import Prelude hiding (foldl, foldr, gcd, lcm, length, null, reverse, span, 
splitAt, takeWhile)
+import Prelude (Bool(..), Ordering, Int, Integer, Double, Float, Char, String,
+                Maybe(..), Either(..), Eq, Show, (.), ($), (*), (==), (/=),
+                (&&), (||), (++), (>>=), fmap, maybe, either, map, all, not,
+                undefined, const, flip, succ, uncurry, min, id, replicate,
+                minBound, maxBound, otherwise, fst, snd, concatMap, mappend, 
div)
 
 import Test.Tasty (defaultMain, testGroup)
 import Test.Tasty.QuickCheck (Arbitrary, CoArbitrary, Property, Gen,
@@ -54,6 +58,7 @@
 import qualified Data.Monoid.Instances.Concat as Concat
 import Data.Monoid.Instances.Measured (Measured)
 import qualified Data.Monoid.Instances.Measured as Measured
+import qualified Data.Monoid.Instances.PrefixMemory as PrefixMemory
 import Data.Monoid.Instances.Stateful (Stateful)
 import qualified Data.Monoid.Instances.Stateful as Stateful
 import Data.Monoid.Instances.Positioned (OffsetPositioned, LinePositioned)
@@ -234,7 +239,7 @@
    where upcast (StableFactorialMonoidInstance i) = FactorialMonoidInstance i
 
 stableFactorialInstances :: [StableFactorialMonoidInstance]
-stableFactorialInstances = stable1 ++ map measure stable1 ++ map position 
stable1 
+stableFactorialInstances = stable1 ++ map measure stable1 ++ map prefixed 
stable1 ++ map position stable1 
    where stable1 = map upcast stableTextualInstances
                    ++ [StableFactorialMonoidInstance (mempty :: ByteString),
                        StableFactorialMonoidInstance (mempty :: 
Lazy.ByteString),
@@ -243,6 +248,7 @@
                        StableFactorialMonoidInstance (mempty :: Vector Int)]
          upcast (StableTextualMonoidInstance i) = 
StableFactorialMonoidInstance i
          measure (StableFactorialMonoidInstance i) = 
StableFactorialMonoidInstance (Measured.measure i)
+         prefixed (StableFactorialMonoidInstance i) = 
StableFactorialMonoidInstance (PrefixMemory.shadowed i)
          position (StableFactorialMonoidInstance (i :: a)) = 
             StableFactorialMonoidInstance (pure i :: OffsetPositioned a)
 
@@ -259,7 +265,7 @@
    where upcast (StableTextualMonoidInstance i) = TextualMonoidInstance i
 
 stableTextualInstances :: [StableTextualMonoidInstance]
-stableTextualInstances = stable1 ++ map measure stable1 ++ concatMap position 
stable1
+stableTextualInstances = stable1 ++ map measure stable1 ++ map prefixed 
stable1 ++ concatMap position stable1
    where stable1 = [StableTextualMonoidInstance (mempty :: TestString),
                     StableTextualMonoidInstance (mempty :: String),
                     StableTextualMonoidInstance (mempty :: Text),
@@ -267,6 +273,7 @@
                     StableTextualMonoidInstance (mempty :: Seq Char),
                     StableTextualMonoidInstance (mempty :: Vector Char)]
          measure (StableTextualMonoidInstance i) = StableTextualMonoidInstance 
(Measured.measure i)
+         prefixed (StableTextualMonoidInstance i) = 
StableTextualMonoidInstance (PrefixMemory.shadowed i)
          position (StableTextualMonoidInstance (i :: a)) = 
             [StableTextualMonoidInstance (pure i :: OffsetPositioned a),
              StableTextualMonoidInstance (pure i :: LinePositioned a)]
@@ -286,6 +293,7 @@
                              LeftReductiveMonoidInstance (mempty :: 
LinePositioned Text),
                              LeftReductiveMonoidInstance (mempty :: 
OffsetPositioned Text),
                              LeftReductiveMonoidInstance (mempty :: Measured 
Text),
+                             LeftReductiveMonoidInstance (mempty :: 
PrefixMemory.Shadowed Text),
                              LeftReductiveMonoidInstance (mempty :: Stateful 
(Sum Integer) Text)]
    where upcast (LeftCancellativeMonoidInstance i) = 
LeftReductiveMonoidInstance i
 
@@ -303,6 +311,7 @@
                               RightReductiveMonoidInstance (mempty :: 
LinePositioned Text),
                               RightReductiveMonoidInstance (mempty :: 
OffsetPositioned Text),
                               RightReductiveMonoidInstance (mempty :: Measured 
Text),
+                              RightReductiveMonoidInstance (mempty :: 
PrefixMemory.Shadowed Text),
                               RightReductiveMonoidInstance (mempty :: Stateful 
(Sum Integer) Text)]
    where upcast (RightCancellativeMonoidInstance i) = 
RightReductiveMonoidInstance i
 
@@ -507,7 +516,7 @@
     ]
 
 main = defaultMain (testGroup "MonoidSubclasses" $ map expand tests)
-  where expand (name, test) = testProperty name (foldr1 (.&&.) $ 
checkInstances test)
+  where expand (name, test) = testProperty name (List.foldr1 (.&&.) $ 
checkInstances test)
 
 checkInstances :: Test -> [Property]
 checkInstances (CommutativeTest checkType) = (map checkType 
commutativeInstances)
@@ -1310,6 +1319,9 @@
 instance (Arbitrary a, FactorialMonoid a) => Arbitrary (Measured a) where
    arbitrary = fmap Measured.measure arbitrary
 
+instance (Arbitrary a, Monoid a) => Arbitrary (PrefixMemory.Shadowed a) where
+   arbitrary = fmap PrefixMemory.shadowed arbitrary
+
 instance (Arbitrary a, FactorialMonoid a) => Arbitrary (OffsetPositioned a) 
where
    arbitrary = fmap pure arbitrary
 
@@ -1328,6 +1340,9 @@
 instance CoArbitrary a => CoArbitrary (Measured a) where
    coarbitrary = coarbitrary . Measured.extract
 
+instance CoArbitrary a => CoArbitrary (PrefixMemory.Shadowed a) where
+   coarbitrary = coarbitrary . PrefixMemory.content
+
 instance CoArbitrary a => CoArbitrary (OffsetPositioned a) where
    coarbitrary = coarbitrary . Positioned.extract
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/monoid-subclasses-1.2.3/monoid-subclasses.cabal 
new/monoid-subclasses-1.2.4/monoid-subclasses.cabal
--- old/monoid-subclasses-1.2.3/monoid-subclasses.cabal 2001-09-09 
03:46:40.000000000 +0200
+++ new/monoid-subclasses-1.2.4/monoid-subclasses.cabal 2001-09-09 
03:46:40.000000000 +0200
@@ -1,5 +1,5 @@
 Name:                monoid-subclasses
-Version:             1.2.3
+Version:             1.2.4
 Cabal-Version:       >= 1.10
 Build-Type:          Simple
 Synopsis:            Subclasses of Monoid
@@ -32,6 +32,7 @@
                    , Data.Monoid.Instances.Concat
                    , Data.Monoid.Instances.Measured
                    , Data.Monoid.Instances.Positioned
+                   , Data.Monoid.Instances.PrefixMemory
                    , Data.Monoid.Instances.Stateful
                    , Data.Monoid.LCM
                    , Data.Monoid.Monus
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/monoid-subclasses-1.2.3/src/Data/Monoid/Instances/PrefixMemory.hs 
new/monoid-subclasses-1.2.4/src/Data/Monoid/Instances/PrefixMemory.hs
--- old/monoid-subclasses-1.2.3/src/Data/Monoid/Instances/PrefixMemory.hs       
1970-01-01 01:00:00.000000000 +0100
+++ new/monoid-subclasses-1.2.4/src/Data/Monoid/Instances/PrefixMemory.hs       
2001-09-09 03:46:40.000000000 +0200
@@ -0,0 +1,265 @@
+{-
+    Copyright 2023 Mario Blazevic
+
+    License: BSD3 (see BSD3-LICENSE.txt file)
+-}
+
+-- | This module defines the monoid transformer data type 'Shadowed'.
+{-# LANGUAGE Haskell2010, DeriveDataTypeable #-}
+
+module Data.Monoid.Instances.PrefixMemory (
+   Shadowed, shadowed, content, prefix
+   )
+where
+
+import Control.Applicative -- (Applicative(..))
+import qualified Data.List as List
+import Data.String (IsString(fromString))
+
+import Data.Data (Data, Typeable)
+import Data.Semigroup (Semigroup(..))
+import Data.Monoid (Monoid(..), Endo(..))
+import Data.Semigroup.Cancellative (LeftReductive(..), RightReductive(..))
+import Data.Semigroup.Factorial (Factorial(..), StableFactorial)
+import Data.Monoid.GCD (LeftGCDMonoid(..), RightGCDMonoid(..))
+import Data.Monoid.Null (MonoidNull(null), PositiveMonoid)
+import Data.Monoid.Factorial (FactorialMonoid(..))
+import Data.Monoid.Textual (TextualMonoid(..))
+import qualified Data.Semigroup.Factorial as Factorial
+import qualified Data.Monoid.Factorial as Factorial
+import qualified Data.Monoid.Textual as Textual
+
+import Prelude hiding (all, any, break, filter, foldl, foldl1, foldr, foldr1, 
lines, map, concatMap,
+                       length, null, reverse, scanl, scanr, scanl1, scanr1, 
span, splitAt)
+
+-- | Monoid transformer that keeps track of the former 'prefix' of its 
'content'. All functions that return a suffix
+-- of their argument, such as 'stripPrefix' or 'commonSuffix', preserve the 
discarded 'prefix'.
+data Shadowed m = Shadowed{prefix :: !m,
+                           -- ^ used to precede the 'content' but has been 
consumed
+                           content :: !m
+                           -- ^ the present value
+                          } deriving (Data, Typeable)
+
+-- | The constructor of a 'Shadowed' monoid, with the initial @prefix = null@
+shadowed :: Monoid m => m -> Shadowed m
+shadowed = Shadowed mempty
+
+instance Eq m => Eq (Shadowed m) where
+   Shadowed{content = a} == Shadowed{content = b} = a == b
+
+instance Ord m => Ord (Shadowed m) where
+   compare Shadowed{content= a} Shadowed{content= b} = compare a b
+
+instance (MonoidNull m, Show m) => Show (Shadowed m) where
+   showsPrec prec (Shadowed p c) rest
+      | null p = showsPrec prec c rest
+      | otherwise = "Shadowed{prefix=" <> shows p (", content=" <> shows c 
("}" <> rest))
+
+instance (MonoidNull m, StableFactorial m) => Semigroup (Shadowed m) where
+   Shadowed p1 c1 <> m2@Shadowed{content = c2}
+      | null c1 && null p1 = m2
+      | otherwise = Shadowed p1 (c1 <> c2)
+   {-# INLINE (<>) #-}
+
+instance (MonoidNull m, StableFactorial m) => Monoid (Shadowed m) where
+   mempty = shadowed mempty
+   mappend = (<>)
+   {-# INLINE mempty #-}
+   {-# INLINE mappend #-}
+
+instance (MonoidNull m, StableFactorial m) => MonoidNull (Shadowed m) where
+   null = null . content
+   {-# INLINE null #-}
+
+instance (PositiveMonoid m, StableFactorial m) => PositiveMonoid (Shadowed m)
+
+instance (MonoidNull m, StableFactorial m, LeftReductive m) => LeftReductive 
(Shadowed m) where
+   t1 `isPrefixOf` t2 = content t1 `isPrefixOf` content t2
+   stripPrefix (Shadowed _ c1) (Shadowed p c2) = fmap (Shadowed (p <> c1)) 
(stripPrefix c1 c2)
+   {-# INLINE isPrefixOf #-}
+   {-# INLINE stripPrefix #-}
+
+instance (Eq m, StableFactorial m, FactorialMonoid m, LeftGCDMonoid m) => 
LeftGCDMonoid (Shadowed m) where
+   stripCommonPrefix (Shadowed p1 c1) (Shadowed p2 c2) =
+      (Shadowed prefix' common, Shadowed (p1 <> common) c1', Shadowed (p2 <> 
common) c2')
+      where (common, c1', c2') = stripCommonPrefix c1 c2
+            prefix' = if p1 == p2 then p1 <> common else common
+   {-# INLINE stripCommonPrefix #-}
+
+instance (StableFactorial m, FactorialMonoid m, RightReductive m) => 
RightReductive (Shadowed m) where
+   isSuffixOf (Shadowed _ c1) (Shadowed _ c2) = isSuffixOf c1 c2
+   stripSuffix (Shadowed _ c1) (Shadowed p c2) = fmap (Shadowed p) 
(stripSuffix c1 c2)
+   {-# INLINE isSuffixOf #-}
+   {-# INLINE stripSuffix #-}
+
+instance (StableFactorial m, FactorialMonoid m, RightGCDMonoid m) => 
RightGCDMonoid (Shadowed m) where
+   commonSuffix (Shadowed _ c1) (Shadowed _ c2) = shadowed suffix
+      where suffix = commonSuffix c1 c2
+   stripCommonSuffix (Shadowed p1 c1) (Shadowed p2 c2) =
+      (Shadowed p1 c1', Shadowed p2 c2',
+       shadowed suffix)
+      where (c1', c2', suffix) = stripCommonSuffix c1 c2
+   {-# INLINE commonSuffix #-}
+   {-# INLINE stripCommonSuffix #-}
+
+instance (FactorialMonoid m, StableFactorial m) => Factorial (Shadowed m) where
+   factors (Shadowed p c) = rewrap <$> List.tail (inits c)
+      where rewrap t
+               | Just (p', prime) <- splitPrimeSuffix t = Shadowed (p <> p') 
prime
+               | otherwise = error "all (not . null) . tail . inits"
+   primePrefix (Shadowed p c) = Shadowed p (primePrefix c)
+   foldl f a0 (Shadowed p0 c0) = fst $ Factorial.foldl f' (a0, p0) c0
+      where f' (a, p) c = (f a (Shadowed p c), p <> c)
+   foldl' f a0 (Shadowed p0 c0) = fst $ Factorial.foldl' f' (a0, p0) c0
+      where f' (a, p) c = ((,) $! f a (Shadowed p c)) $! p <> c
+   foldr f a0 (Shadowed p0 c0) = Factorial.foldr f' (const a0) c0 p0
+      where f' c cont p = f (Shadowed p c) (cont $! p <> c)
+   foldMap f (Shadowed p0 c) = appEndo (Factorial.foldMap f' c) (const mempty) 
p0
+      where -- f' :: m -> Endo (Int -> m)
+            f' prime = Endo (\cont p-> f (Shadowed p prime) `mappend` (cont $! 
p <> prime))
+   length (Shadowed _ c) = length c
+   reverse (Shadowed p c) = Shadowed p (Factorial.reverse c)
+   {-# INLINE primePrefix #-}
+   {-# INLINE foldl #-}
+   {-# INLINE foldl' #-}
+   {-# INLINE foldr #-}
+   {-# INLINE foldMap #-}
+
+instance (StableFactorial m, FactorialMonoid m) => FactorialMonoid (Shadowed 
m) where
+   splitPrimePrefix (Shadowed p c) = fmap rewrap (splitPrimePrefix c)
+      where rewrap (cp, cs) = (Shadowed p cp, Shadowed (p <> cp) cs)
+   splitPrimeSuffix (Shadowed p c) = fmap rewrap (splitPrimeSuffix c)
+      where rewrap (cp, cs) = (Shadowed p cp, Shadowed (p <> cp) cs)
+   spanMaybe s0 f (Shadowed p0 c) = rewrap $ Factorial.spanMaybe (s0, p0) f' c
+      where f' (s, p) prime = do s' <- f s (Shadowed p prime)
+                                 let p' = p <> prime
+                                 Just $! seq p' (s', p')
+            rewrap (cp, cs, (s, p)) = (Shadowed p0 cp, Shadowed p cs, s)
+   spanMaybe' s0 f (Shadowed p0 c) = rewrap $! Factorial.spanMaybe' (s0, p0) 
f' c
+      where f' (s, p) prime = do s' <- f s (Shadowed p prime)
+                                 let p' = p <> prime
+                                 Just $! s' `seq` p' `seq` (s', p')
+            rewrap (cp, cs, (s, p)) = (Shadowed p0 cp, Shadowed p cs, s)
+   span f (Shadowed p0 c) = rewrap $ Factorial.spanMaybe' p0 f' c
+      where f' p prime = if f (Shadowed p prime)
+                         then Just $! p <> prime
+                         else Nothing
+            rewrap (cp, cs, p) = (Shadowed p0 cp, Shadowed p cs)
+   splitAt n (Shadowed p c) = (Shadowed p cp, Shadowed (p <> cp) cs)
+      where (cp, cs) = splitAt n c
+   take n (Shadowed p c) = Shadowed p (Factorial.take n c)
+   {-# INLINE splitPrimePrefix #-}
+   {-# INLINE splitPrimeSuffix #-}
+   {-# INLINE span #-}
+   {-# INLINE splitAt #-}
+   {-# INLINE take #-}
+
+instance (StableFactorial m, FactorialMonoid m) => StableFactorial (Shadowed m)
+
+instance (Monoid m, IsString m) => IsString (Shadowed m) where
+   fromString = shadowed . fromString
+
+instance (Eq m, StableFactorial m, TextualMonoid m) => TextualMonoid (Shadowed 
m) where
+   splitCharacterPrefix (Shadowed p t) = (Shadowed p <$>) <$> 
Textual.splitCharacterPrefix t
+
+   fromText = shadowed . fromText
+   singleton = shadowed . singleton
+
+   characterPrefix = characterPrefix . content
+
+   map f (Shadowed p c) = Shadowed p (map f c)
+   concatMap f (Shadowed p c) = Shadowed p (concatMap (content . f) c)
+   all p = all p . content
+   any p = any p . content
+
+   foldl ft fc a0 (Shadowed p0 c0) = fst $ Textual.foldl ft' fc' (a0, p0) c0
+      where ft' (a, p) c = (ft a (Shadowed p c), p <> c)
+            fc' (a, p) c = (fc a c, p <> Textual.singleton c)
+   foldl' ft fc a0 (Shadowed p0 c0) = fst $ Textual.foldl' ft' fc' (a0, p0) c0
+      where ft' (a, p) c = ((,) $! ft a (Shadowed p c)) $! p <> c
+            fc' (a, p) c = ((,) $! fc a c) $! p <> Textual.singleton c
+   foldr ft fc a0 (Shadowed p0 c0) = snd $ Textual.foldr ft' fc' (p0, a0) c0
+      where ft' c (p, a) = ((,) $! p <> c) $! ft (Shadowed p c) a
+            fc' c (p, a) = ((,) $! p <> Textual.singleton c) $! fc c a
+
+   scanl f ch (Shadowed p c) = Shadowed p (Textual.scanl f ch c)
+   scanl1 f (Shadowed p c) = Shadowed p (Textual.scanl1 f c)
+   scanr f ch (Shadowed p c) = Shadowed p (Textual.scanr f ch c)
+   scanr1 f (Shadowed p c) = Shadowed p (Textual.scanr1 f c)
+   mapAccumL f a0 (Shadowed p c) = fmap (Shadowed p) (Textual.mapAccumL f a0 c)
+   mapAccumR f a0 (Shadowed p c) = fmap (Shadowed p) (Textual.mapAccumR f a0 c)
+
+   spanMaybe s0 ft fc (Shadowed p0 t) = rewrap $ Textual.spanMaybe (s0, p0) 
ft' fc' t
+      where ft' (s, p) prime = do s' <- ft s (Shadowed p prime)
+                                  let p' = p <> prime
+                                  Just $! seq p' (s', p')
+            fc' (s, p) c = do s' <- fc s c
+                              let p' = p <> Textual.singleton c
+                              Just $! seq p' (s', p')
+            rewrap (tp, ts, (s, p)) = (Shadowed p0 tp, Shadowed p ts, s)
+   spanMaybe' s0 ft fc (Shadowed p0 t) = rewrap $! Textual.spanMaybe' (s0, p0) 
ft' fc' t
+      where ft' (s, p) prime = do s' <- ft s (Shadowed p prime)
+                                  let p' = p <> prime
+                                  Just $! s' `seq` p' `seq` (s', p')
+            fc' (s, p) c = do s' <- fc s c
+                              let p' = p <> Textual.singleton c
+                              Just $! s' `seq` p' `seq` (s', p')
+            rewrap (tp, ts, (s, p)) = (Shadowed p0 tp, Shadowed p ts, s)
+   span ft fc (Shadowed p0 t) = rewrap $ Textual.spanMaybe' p0 ft' fc' t
+      where ft' p prime = if ft (Shadowed p prime)
+                          then Just $! p <> prime
+                          else Nothing
+            fc' p c = if fc c
+                      then Just $! p <> Textual.singleton c
+                      else Nothing
+            rewrap (tp, ts, p) = (Shadowed p0 tp, Shadowed p ts)
+
+   split f (Shadowed p0 c0) = rewrap p0 (Textual.split f c0)
+      where rewrap _ [] = []
+            rewrap p (c:rest) = Shadowed p c : rewrap (p <> c) rest
+   find p = find p . content
+
+   foldl_ fc a0 (Shadowed _ c) = Textual.foldl_ fc a0 c
+   foldl_' fc a0 (Shadowed _ c) = Textual.foldl_' fc a0 c
+   foldr_ fc a0 (Shadowed _ c) = Textual.foldr_ fc a0 c
+
+   spanMaybe_ s0 fc (Shadowed p0 t) = rewrap $ Textual.spanMaybe_' (s0, p0) 
fc' t
+      where fc' (s, p) c = do s' <- fc s c
+                              let p' = p <> Textual.singleton c
+                              Just $! seq p' (s', p')
+            rewrap (tp, ts, (s, p)) = (Shadowed p0 tp, Shadowed p ts, s)
+   spanMaybe_' s0 fc (Shadowed p0 t) = rewrap $! Textual.spanMaybe_' (s0, p0) 
fc' t
+      where fc' (s, p) c = do s' <- fc s c
+                              let p' = p <> Textual.singleton c
+                              Just $! s' `seq` p' `seq` (s', p')
+            rewrap (tp, ts, (s, p)) = (Shadowed p0 tp, Shadowed p ts, s)
+   span_ bt fc (Shadowed p0 t) = rewrap $ Textual.span_ bt fc t
+      where rewrap (tp, ts) = (Shadowed p0 tp, Shadowed (p0 <> tp) ts)
+   break_ bt fc (Shadowed p0 t) = rewrap $ Textual.break_ bt fc t
+      where rewrap (tp, ts) = (Shadowed p0 tp, Shadowed (p0 <> tp) ts)
+   dropWhile_ bt fc t = snd (span_ bt fc t)
+   takeWhile_ bt fc (Shadowed p t) = Shadowed p (takeWhile_ bt fc t)
+   toString ft (Shadowed _ t) = toString (ft . shadowed) t
+   toText ft (Shadowed _ t) = toText (ft . shadowed) t
+
+   {-# INLINE characterPrefix #-}
+   {-# INLINE splitCharacterPrefix #-}
+   {-# INLINE map #-}
+   {-# INLINE concatMap #-}
+   {-# INLINE foldl' #-}
+   {-# INLINE foldr #-}
+   {-# INLINABLE spanMaybe #-}
+   {-# INLINABLE spanMaybe' #-}
+   {-# INLINABLE span #-}
+   {-# INLINE foldl_' #-}
+   {-# INLINE foldr_ #-}
+   {-# INLINE any #-}
+   {-# INLINE all #-}
+   {-# INLINABLE spanMaybe_ #-}
+   {-# INLINABLE spanMaybe_' #-}
+   {-# INLINE span_ #-}
+   {-# INLINE break_ #-}
+   {-# INLINE dropWhile_ #-}
+   {-# INLINE takeWhile_ #-}
+   {-# INLINE split #-}
+   {-# INLINE find #-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/monoid-subclasses-1.2.3/src/Data/Monoid/Textual.hs 
new/monoid-subclasses-1.2.4/src/Data/Monoid/Textual.hs
--- old/monoid-subclasses-1.2.3/src/Data/Monoid/Textual.hs      2001-09-09 
03:46:40.000000000 +0200
+++ new/monoid-subclasses-1.2.4/src/Data/Monoid/Textual.hs      2001-09-09 
03:46:40.000000000 +0200
@@ -31,8 +31,8 @@
 import Data.Monoid.Factorial (FactorialMonoid)
 import qualified Data.Monoid.Factorial as Factorial
 
-import Prelude hiding (all, any, break, concatMap, dropWhile, foldl, foldl1, 
foldr, foldr1, map,
-                       scanl, scanl1, scanr, scanr1, span, takeWhile)
+import Prelude (Bool(..), Int, Char, String, Maybe(..), (.), ($), (==), (||), 
(&&),
+                id, seq, succ, const, otherwise, maybe, fst, snd)
 
 -- | The 'TextualMonoid' class is an extension of 'FactorialMonoid' 
specialized for monoids that can contain
 -- characters. Its methods are generally equivalent to their namesake 
functions from "Data.List" and "Data.Text", and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/monoid-subclasses-1.2.3/src/Data/Semigroup/Factorial.hs 
new/monoid-subclasses-1.2.4/src/Data/Semigroup/Factorial.hs
--- old/monoid-subclasses-1.2.3/src/Data/Semigroup/Factorial.hs 2001-09-09 
03:46:40.000000000 +0200
+++ new/monoid-subclasses-1.2.4/src/Data/Semigroup/Factorial.hs 2001-09-09 
03:46:40.000000000 +0200
@@ -37,7 +37,10 @@
 
 import Data.Monoid.Null (MonoidNull(null))
 
-import Prelude hiding (break, drop, dropWhile, foldl, foldr, last, length, 
map, mapM, mapM_, null, reverse)
+import Prelude (Int, Maybe(..), Eq, Ord, Monoid, Applicative, Monad, Integral,
+                (.), (-), (+), ($), (*>), (++), pure, return, mempty, mappend,
+                mconcat, pred, id, seq, otherwise, uncurry, fromIntegral, not,
+                fmap, max, abs, signum, replicate, maybe, succ, const)
 
 -- | Class of semigroups that can be split into irreducible (/i.e./, atomic or 
prime) 'factors' in a unique way. Factors of
 -- a 'Product' are literally its prime factors:

Reply via email to