monoid-subclasses-1.2.5.1: Subclasses of Monoid

Safe Haskell | Safe-Inferred
Language | Haskell2010

Data.Monoid.Instances.Concat

Description

This module defines the monoid transformer data type `Concat`.

Synopsis

- data Concat a
- concatenate :: PositiveMonoid a => Seq a -> Concat a
- extract :: Concat a -> Seq a
- force :: Semigroup a => Concat a -> a

# Documentation

data Concat a #

``Concat`` is a transparent monoid transformer. The behaviour of the ``Concat` a` instances of monoid subclasses is identical to the behaviour of their `a` instances, up to the `pure` isomorphism.

The only purpose of `Concat` then is to change the performance characteristics of various operations. Most importantly, injecting a monoid into `Concat` has the effect of making `mappend` a constant-time operation. The `splitPrimePrefix` and `splitPrimeSuffix` operations are amortized to constant time, provided that only one or the other is used. Using both operations alternately will trigger the worst-case behaviour of O(n).

#### Instances

Instances details

Applicative Concat # |
Instance details Defined in Data.Monoid.Instances.Concat Methods pure :: a -> Concat a # (<*>) :: Concat (a -> b) -> Concat a -> Concat b # liftA2 :: (a -> b -> c) -> Concat a -> Concat b -> Concat c # (*>) :: Concat a -> Concat b -> Concat b # (<*) :: Concat a -> Concat b -> Concat a #
Functor Concat # |
Instance details Defined in Data.Monoid.Instances.Concat Methods fmap :: (a -> b) -> Concat a -> Concat b # (<$) :: a -> Concat b -> Concat a #
Foldable Concat # |
Instance details Defined in Data.Monoid.Instances.Concat Methods fold :: Monoid m => Concat m -> m # foldMap :: Monoid m => (a -> m) -> Concat a -> m # foldMap' :: Monoid m => (a -> m) -> Concat a -> m # foldr :: (a -> b -> b) -> b -> Concat a -> b # foldr' :: (a -> b -> b) -> b -> Concat a -> b # foldl :: (b -> a -> b) -> b -> Concat a -> b # foldl' :: (b -> a -> b) -> b -> Concat a -> b # foldr1 :: (a -> a -> a) -> Concat a -> a # foldl1 :: (a -> a -> a) -> Concat a -> a # toList :: Concat a -> [a] # null :: Concat a -> Bool # length :: Concat a -> Int # elem :: Eq a => a -> Concat a -> Bool # maximum :: Ord a => Concat a -> a # minimum :: Ord a => Concat a -> a # sum :: Num a => Concat a -> a # product :: Num a => Concat a -> a #
PositiveMonoid a => Monoid (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods mempty :: Concat a # mappend :: Concat a -> Concat a -> Concat a # mconcat :: [Concat a] -> Concat a #
PositiveMonoid a => Semigroup (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods (<>) :: Concat a -> Concat a -> Concat a # sconcat :: NonEmpty (Concat a) -> Concat a # stimes :: Integral b => b -> Concat a -> Concat a #
Data a => Data (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Concat a -> c (Concat a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Concat a) # toConstr :: Concat a -> Constr # dataTypeOf :: Concat a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Concat a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Concat a)) # gmapT :: (forall b. Data b => b -> b) -> Concat a -> Concat a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Concat a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Concat a -> r # gmapQ :: (forall d. Data d => d -> u) -> Concat a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Concat a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Concat a -> m (Concat a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Concat a -> m (Concat a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Concat a -> m (Concat a) #
IsString a => IsString (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods fromString :: String -> Concat a #
Show a => Show (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods showsPrec :: Int -> Concat a -> ShowS # show :: Concat a -> String # showList :: [Concat a] -> ShowS #
(Eq a, Semigroup a) => Eq (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods (==) :: Concat a -> Concat a -> Bool # (/=) :: Concat a -> Concat a -> Bool #
(Ord a, Semigroup a) => Ord (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods compare :: Concat a -> Concat a -> Ordering # (<) :: Concat a -> Concat a -> Bool # (<=) :: Concat a -> Concat a -> Bool # (>) :: Concat a -> Concat a -> Bool # (>=) :: Concat a -> Concat a -> Bool # max :: Concat a -> Concat a -> Concat a # min :: Concat a -> Concat a -> Concat a #
(FactorialMonoid a, PositiveMonoid a) => FactorialMonoid (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods splitPrimePrefix :: Concat a -> Maybe (Concat a, Concat a) # splitPrimeSuffix :: Concat a -> Maybe (Concat a, Concat a) # inits :: Concat a -> [Concat a] # tails :: Concat a -> [Concat a] # span :: (Concat a -> Bool) -> Concat a -> (Concat a, Concat a) # break :: (Concat a -> Bool) -> Concat a -> (Concat a, Concat a) # split :: (Concat a -> Bool) -> Concat a -> [Concat a] # takeWhile :: (Concat a -> Bool) -> Concat a -> Concat a # dropWhile :: (Concat a -> Bool) -> Concat a -> Concat a # spanMaybe :: s -> (s -> Concat a -> Maybe s) -> Concat a -> (Concat a, Concat a, s) # spanMaybe' :: s -> (s -> Concat a -> Maybe s) -> Concat a -> (Concat a, Concat a, s) # splitAt :: Int -> Concat a -> (Concat a, Concat a) # drop :: Int -> Concat a -> Concat a # take :: Int -> Concat a -> Concat a #
(LeftGCDMonoid a, StableFactorial a, PositiveMonoid a) => LeftGCDMonoid (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods commonPrefix :: Concat a -> Concat a -> Concat a # stripCommonPrefix :: Concat a -> Concat a -> (Concat a, Concat a, Concat a) #
(RightGCDMonoid a, StableFactorial a, PositiveMonoid a) => RightGCDMonoid (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods commonSuffix :: Concat a -> Concat a -> Concat a # stripCommonSuffix :: Concat a -> Concat a -> (Concat a, Concat a, Concat a) #
PositiveMonoid a => MonoidNull (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods null :: Concat a -> Bool #
PositiveMonoid a => PositiveMonoid (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat
(Eq a, TextualMonoid a, StableFactorial a, PositiveMonoid a) => TextualMonoid (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods fromText :: Text -> Concat a # singleton :: Char -> Concat a # splitCharacterPrefix :: Concat a -> Maybe (Char, Concat a) # characterPrefix :: Concat a -> Maybe Char # map :: (Char -> Char) -> Concat a -> Concat a # concatMap :: (Char -> Concat a) -> Concat a -> Concat a # toString :: (Concat a -> String) -> Concat a -> String # toText :: (Concat a -> Text) -> Concat a -> Text # any :: (Char -> Bool) -> Concat a -> Bool # all :: (Char -> Bool) -> Concat a -> Bool # foldl :: (a0 -> Concat a -> a0) -> (a0 -> Char -> a0) -> a0 -> Concat a -> a0 # foldl' :: (a0 -> Concat a -> a0) -> (a0 -> Char -> a0) -> a0 -> Concat a -> a0 # foldr :: (Concat a -> a0 -> a0) -> (Char -> a0 -> a0) -> a0 -> Concat a -> a0 # scanl :: (Char -> Char -> Char) -> Char -> Concat a -> Concat a # scanl1 :: (Char -> Char -> Char) -> Concat a -> Concat a # scanr :: (Char -> Char -> Char) -> Char -> Concat a -> Concat a # scanr1 :: (Char -> Char -> Char) -> Concat a -> Concat a # mapAccumL :: (a0 -> Char -> (a0, Char)) -> a0 -> Concat a -> (a0, Concat a) # mapAccumR :: (a0 -> Char -> (a0, Char)) -> a0 -> Concat a -> (a0, Concat a) # takeWhile :: (Concat a -> Bool) -> (Char -> Bool) -> Concat a -> Concat a # dropWhile :: (Concat a -> Bool) -> (Char -> Bool) -> Concat a -> Concat a # break :: (Concat a -> Bool) -> (Char -> Bool) -> Concat a -> (Concat a, Concat a) # span :: (Concat a -> Bool) -> (Char -> Bool) -> Concat a -> (Concat a, Concat a) # spanMaybe :: s -> (s -> Concat a -> Maybe s) -> (s -> Char -> Maybe s) -> Concat a -> (Concat a, Concat a, s) # spanMaybe' :: s -> (s -> Concat a -> Maybe s) -> (s -> Char -> Maybe s) -> Concat a -> (Concat a, Concat a, s) # split :: (Char -> Bool) -> Concat a -> [Concat a] # find :: (Char -> Bool) -> Concat a -> Maybe Char # elem :: Char -> Concat a -> Bool # foldl_ :: (a0 -> Char -> a0) -> a0 -> Concat a -> a0 # foldl_' :: (a0 -> Char -> a0) -> a0 -> Concat a -> a0 # foldr_ :: (Char -> a0 -> a0) -> a0 -> Concat a -> a0 # takeWhile_ :: Bool -> (Char -> Bool) -> Concat a -> Concat a # dropWhile_ :: Bool -> (Char -> Bool) -> Concat a -> Concat a # break_ :: Bool -> (Char -> Bool) -> Concat a -> (Concat a, Concat a) # span_ :: Bool -> (Char -> Bool) -> Concat a -> (Concat a, Concat a) # spanMaybe_ :: s -> (s -> Char -> Maybe s) -> Concat a -> (Concat a, Concat a, s) # spanMaybe_' :: s -> (s -> Char -> Maybe s) -> Concat a -> (Concat a, Concat a, s) #
(LeftReductive a, StableFactorial a, PositiveMonoid a) => LeftReductive (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods isPrefixOf :: Concat a -> Concat a -> Bool # stripPrefix :: Concat a -> Concat a -> Maybe (Concat a) #
(RightReductive a, StableFactorial a, PositiveMonoid a) => RightReductive (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods isSuffixOf :: Concat a -> Concat a -> Bool # stripSuffix :: Concat a -> Concat a -> Maybe (Concat a) #
(Factorial a, PositiveMonoid a) => Factorial (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat Methods factors :: Concat a -> [Concat a] # primePrefix :: Concat a -> Concat a # primeSuffix :: Concat a -> Concat a # foldl :: (a0 -> Concat a -> a0) -> a0 -> Concat a -> a0 # foldl' :: (a0 -> Concat a -> a0) -> a0 -> Concat a -> a0 # foldr :: (Concat a -> a0 -> a0) -> a0 -> Concat a -> a0 # length :: Concat a -> Int # foldMap :: Monoid n => (Concat a -> n) -> Concat a -> n # reverse :: Concat a -> Concat a #
(Factorial a, PositiveMonoid a) => StableFactorial (Concat a) # |
Instance details Defined in Data.Monoid.Instances.Concat

concatenate :: PositiveMonoid a => Seq a -> Concat a #

Deprecated: Concat is not wrapping Seq any more, don't use concatenate nor extract.

extract :: Concat a -> Seq a #

Deprecated: Concat is not wrapping Seq any more, don't use concatenate nor extract.

force :: Semigroup a => Concat a -> a #