| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
GHC.Internal.Data.Semigroup.Internal
Description
Auxiliary definitions for Semigroup
This module provides some newtype wrappers and helpers which are
reexported from the Data.Semigroup module or imported directly
by some other modules.
This module also provides internal definitions related to the
Semigroup class some.
This module exists mostly to simplify or workaround import-graph issues.
Since: base-4.11.0.0
Synopsis
- stimesIdempotent :: Integral b => b -> a -> a
- stimesIdempotentMonoid :: (Integral b, Monoid a) => b -> a -> a
- stimesMonoid :: (Integral b, Monoid a) => b -> a -> a
- newtype Dual a = Dual {
- getDual :: a
- newtype Endo a = Endo {
- appEndo :: a -> a
- stimesEndoError :: a
- newtype All = All {}
- newtype Any = Any {}
- newtype Sum a = Sum {
- getSum :: a
- newtype Product a = Product {
- getProduct :: a
- newtype Alt (f :: k -> Type) (a :: k) = Alt {
- getAlt :: f a
Documentation
stimesIdempotent :: Integral b => b -> a -> a #
stimesIdempotentMonoid :: (Integral b, Monoid a) => b -> a -> a #
stimesMonoid :: (Integral b, Monoid a) => b -> a -> a #
The dual of a Monoid, obtained by swapping the arguments of (<>).
Dual a <> Dual b == Dual (b <> a)
Examples
>>>Dual "Hello" <> Dual "World"Dual {getDual = "WorldHello"}
>>>Dual (Dual "Hello") <> Dual (Dual "World")Dual {getDual = Dual {getDual = "HelloWorld"}}
Instances
| Applicative Dual # | Since: base-4.8.0.0 | ||||
| Functor Dual # | Since: base-4.8.0.0 | ||||
| Monad Dual # | Since: base-4.8.0.0 | ||||
| MonadFix Dual # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Control.Monad.Fix | |||||
| MonadZip Dual # | Since: ghc-internal-4.8.0.0 | ||||
| Foldable Dual # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Foldable Methods fold :: Monoid m => Dual m -> m # foldMap :: Monoid m => (a -> m) -> Dual a -> m # foldMap' :: Monoid m => (a -> m) -> Dual a -> m # foldr :: (a -> b -> b) -> b -> Dual a -> b # foldr' :: (a -> b -> b) -> b -> Dual a -> b # foldl :: (b -> a -> b) -> b -> Dual a -> b # foldl' :: (b -> a -> b) -> b -> Dual a -> b # foldr1 :: (a -> a -> a) -> Dual a -> a # foldl1 :: (a -> a -> a) -> Dual a -> a # elem :: Eq a => a -> Dual a -> Bool # maximum :: Ord a => Dual a -> a # | |||||
| Traversable Dual # | Since: base-4.8.0.0 | ||||
| Generic1 Dual # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| Monoid a => Monoid (Dual a) # | Since: base-2.1 | ||||
| Semigroup a => Semigroup (Dual a) # | Since: base-4.9.0.0 | ||||
| Eq a => Eq (Dual a) # | Since: base-2.1 | ||||
| Ord a => Ord (Dual a) # | Since: base-2.1 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
| Data a => Data (Dual a) # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Dual a -> c (Dual a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Dual a) # toConstr :: Dual a -> Constr # dataTypeOf :: Dual a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Dual a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Dual a)) # gmapT :: (forall b. Data b => b -> b) -> Dual a -> Dual a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Dual a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Dual a -> r # gmapQ :: (forall d. Data d => d -> u) -> Dual a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Dual a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) # | |||||
| Bounded a => Bounded (Dual a) # | Since: base-2.1 | ||||
| Generic (Dual a) # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| Read a => Read (Dual a) # | Since: base-2.1 | ||||
| Show a => Show (Dual a) # | Since: base-2.1 | ||||
| type Rep1 Dual # | Since: base-4.7.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
| type Rep (Dual a) # | Since: base-4.7.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
The monoid of endomorphisms under composition.
Endo f <> Endo g == Endo (f . g)
Examples
>>>let computation = Endo ("Hello, " ++) <> Endo (++ "!")>>>appEndo computation "Haskell""Hello, Haskell!"
>>>let computation = Endo (*3) <> Endo (+1)>>>appEndo computation 16
Instances
| Monoid (Endo a) # | Since: base-2.1 | ||||
| Semigroup (Endo a) # | Since: base-4.9.0.0 | ||||
| Generic (Endo a) # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| type Rep (Endo a) # | Since: base-4.7.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
stimesEndoError :: a #
Boolean monoid under conjunction (&&).
All x <> All y = All (x && y)
Examples
>>>All True <> mempty <> All False)All {getAll = False}
>>>mconcat (map (\x -> All (even x)) [2,4,6,7,8])All {getAll = False}
>>>All True <> memptyAll {getAll = True}
Instances
| Monoid All # | Since: base-2.1 | ||||
| Semigroup All # | Since: base-4.9.0.0 | ||||
| Eq All # | Since: base-2.1 | ||||
| Ord All # | Since: base-2.1 | ||||
| Data All # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> All -> c All # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c All # dataTypeOf :: All -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c All) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c All) # gmapT :: (forall b. Data b => b -> b) -> All -> All # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> All -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> All -> r # gmapQ :: (forall d. Data d => d -> u) -> All -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> All -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> All -> m All # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> All -> m All # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> All -> m All # | |||||
| Bounded All # | Since: base-2.1 | ||||
| Generic All # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| Read All # | Since: base-2.1 | ||||
| Show All # | Since: base-2.1 | ||||
| type Rep All # | Since: base-4.7.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
Boolean monoid under disjunction (||).
Any x <> Any y = Any (x || y)
Examples
>>>Any True <> mempty <> Any FalseAny {getAny = True}
>>>mconcat (map (\x -> Any (even x)) [2,4,6,7,8])Any {getAny = True}
>>>Any False <> memptyAny {getAny = False}
Instances
| Monoid Any # | Since: base-2.1 | ||||
| Semigroup Any # | Since: base-4.9.0.0 | ||||
| Eq Any # | Since: base-2.1 | ||||
| Ord Any # | Since: base-2.1 | ||||
| Data Any # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Any -> c Any # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Any # dataTypeOf :: Any -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Any) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Any) # gmapT :: (forall b. Data b => b -> b) -> Any -> Any # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Any -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Any -> r # gmapQ :: (forall d. Data d => d -> u) -> Any -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Any -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Any -> m Any # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Any -> m Any # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Any -> m Any # | |||||
| Bounded Any # | Since: base-2.1 | ||||
| Generic Any # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| Read Any # | Since: base-2.1 | ||||
| Show Any # | Since: base-2.1 | ||||
| type Rep Any # | Since: base-4.7.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
Monoid under addition.
Sum a <> Sum b = Sum (a + b)
Examples
>>>Sum 1 <> Sum 2 <> memptySum {getSum = 3}
>>>mconcat [ Sum n | n <- [3 .. 9]]Sum {getSum = 42}
Instances
| Applicative Sum # | Since: base-4.8.0.0 | ||||
| Functor Sum # | Since: base-4.8.0.0 | ||||
| Monad Sum # | Since: base-4.8.0.0 | ||||
| MonadFix Sum # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Control.Monad.Fix | |||||
| MonadZip Sum # | Since: ghc-internal-4.8.0.0 | ||||
| Foldable Sum # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Foldable Methods fold :: Monoid m => Sum m -> m # foldMap :: Monoid m => (a -> m) -> Sum a -> m # foldMap' :: Monoid m => (a -> m) -> Sum a -> m # foldr :: (a -> b -> b) -> b -> Sum a -> b # foldr' :: (a -> b -> b) -> b -> Sum a -> b # foldl :: (b -> a -> b) -> b -> Sum a -> b # foldl' :: (b -> a -> b) -> b -> Sum a -> b # foldr1 :: (a -> a -> a) -> Sum a -> a # foldl1 :: (a -> a -> a) -> Sum a -> a # elem :: Eq a => a -> Sum a -> Bool # maximum :: Ord a => Sum a -> a # | |||||
| Traversable Sum # | Since: base-4.8.0.0 | ||||
| Generic1 Sum # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| Num a => Monoid (Sum a) # | Since: base-2.1 | ||||
| Num a => Semigroup (Sum a) # | Since: base-4.9.0.0 | ||||
| Eq a => Eq (Sum a) # | Since: base-2.1 | ||||
| Ord a => Ord (Sum a) # | Since: base-2.1 | ||||
| Data a => Data (Sum a) # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Sum a -> c (Sum a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Sum a) # dataTypeOf :: Sum a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Sum a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Sum a)) # gmapT :: (forall b. Data b => b -> b) -> Sum a -> Sum a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sum a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sum a -> r # gmapQ :: (forall d. Data d => d -> u) -> Sum a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Sum a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Sum a -> m (Sum a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Sum a -> m (Sum a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Sum a -> m (Sum a) # | |||||
| Bounded a => Bounded (Sum a) # | Since: base-2.1 | ||||
| Generic (Sum a) # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| Num a => Num (Sum a) # | Since: base-4.7.0.0 | ||||
| Read a => Read (Sum a) # | Since: base-2.1 | ||||
| Show a => Show (Sum a) # | Since: base-2.1 | ||||
| type Rep1 Sum # | Since: base-4.7.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
| type Rep (Sum a) # | Since: base-4.7.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
Monoid under multiplication.
Product x <> Product y == Product (x * y)
Examples
>>>Product 3 <> Product 4 <> memptyProduct {getProduct = 12}
>>>mconcat [ Product n | n <- [2 .. 10]]Product {getProduct = 3628800}
Constructors
| Product | |
Fields
| |
Instances
| Applicative Product # | Since: base-4.8.0.0 | ||||
| Functor Product # | Since: base-4.8.0.0 | ||||
| Monad Product # | Since: base-4.8.0.0 | ||||
| MonadFix Product # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Control.Monad.Fix | |||||
| MonadZip Product # | Since: ghc-internal-4.8.0.0 | ||||
| Foldable Product # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Foldable Methods fold :: Monoid m => Product m -> m # foldMap :: Monoid m => (a -> m) -> Product a -> m # foldMap' :: Monoid m => (a -> m) -> Product a -> m # foldr :: (a -> b -> b) -> b -> Product a -> b # foldr' :: (a -> b -> b) -> b -> Product a -> b # foldl :: (b -> a -> b) -> b -> Product a -> b # foldl' :: (b -> a -> b) -> b -> Product a -> b # foldr1 :: (a -> a -> a) -> Product a -> a # foldl1 :: (a -> a -> a) -> Product a -> a # elem :: Eq a => a -> Product a -> Bool # maximum :: Ord a => Product a -> a # minimum :: Ord a => Product a -> a # | |||||
| Traversable Product # | Since: base-4.8.0.0 | ||||
| Generic1 Product # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| Num a => Monoid (Product a) # | Since: base-2.1 | ||||
| Num a => Semigroup (Product a) # | Since: base-4.9.0.0 | ||||
| Eq a => Eq (Product a) # | Since: base-2.1 | ||||
| Ord a => Ord (Product a) # | Since: base-2.1 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
| Data a => Data (Product a) # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Product a -> c (Product a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Product a) # toConstr :: Product a -> Constr # dataTypeOf :: Product a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Product a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Product a)) # gmapT :: (forall b. Data b => b -> b) -> Product a -> Product a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Product a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Product a -> r # gmapQ :: (forall d. Data d => d -> u) -> Product a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Product a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) # | |||||
| Bounded a => Bounded (Product a) # | Since: base-2.1 | ||||
| Generic (Product a) # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| Num a => Num (Product a) # | Since: base-4.7.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
| Read a => Read (Product a) # | Since: base-2.1 | ||||
| Show a => Show (Product a) # | Since: base-2.1 | ||||
| type Rep1 Product # | Since: base-4.7.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
| type Rep (Product a) # | Since: base-4.7.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
newtype Alt (f :: k -> Type) (a :: k) #
Monoid under <|>.
Alt l <> Alt r == Alt (l <|> r)
Examples
>>>Alt (Just 12) <> Alt (Just 24)Alt {getAlt = Just 12}
>>>Alt Nothing <> Alt (Just 24)Alt {getAlt = Just 24}
Since: base-4.8.0.0
Instances
| Generic1 (Alt f :: k -> Type) # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| Alternative f => Alternative (Alt f) # | Since: base-4.8.0.0 | ||||
| Applicative f => Applicative (Alt f) # | Since: base-4.8.0.0 | ||||
| Functor f => Functor (Alt f) # | Since: base-4.8.0.0 | ||||
| Monad f => Monad (Alt f) # | Since: base-4.8.0.0 | ||||
| MonadPlus f => MonadPlus (Alt f) # | Since: base-4.8.0.0 | ||||
| MonadFix f => MonadFix (Alt f) # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Control.Monad.Fix | |||||
| MonadZip f => MonadZip (Alt f) # | Since: ghc-internal-4.8.0.0 | ||||
| Foldable f => Foldable (Alt f) # | Since: base-4.12.0.0 | ||||
Defined in GHC.Internal.Data.Foldable Methods fold :: Monoid m => Alt f m -> m # foldMap :: Monoid m => (a -> m) -> Alt f a -> m # foldMap' :: Monoid m => (a -> m) -> Alt f a -> m # foldr :: (a -> b -> b) -> b -> Alt f a -> b # foldr' :: (a -> b -> b) -> b -> Alt f a -> b # foldl :: (b -> a -> b) -> b -> Alt f a -> b # foldl' :: (b -> a -> b) -> b -> Alt f a -> b # foldr1 :: (a -> a -> a) -> Alt f a -> a # foldl1 :: (a -> a -> a) -> Alt f a -> a # elem :: Eq a => a -> Alt f a -> Bool # maximum :: Ord a => Alt f a -> a # minimum :: Ord a => Alt f a -> a # | |||||
| Traversable f => Traversable (Alt f) # | Since: base-4.12.0.0 | ||||
| Alternative f => Monoid (Alt f a) # | Since: base-4.8.0.0 | ||||
| Alternative f => Semigroup (Alt f a) # | Since: base-4.9.0.0 | ||||
| Eq (f a) => Eq (Alt f a) # | Since: base-4.8.0.0 | ||||
| Ord (f a) => Ord (Alt f a) # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
| (Data (f a), Data a, Typeable f) => Data (Alt f a) # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Alt f a -> c (Alt f a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Alt f a) # toConstr :: Alt f a -> Constr # dataTypeOf :: Alt f a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Alt f a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Alt f a)) # gmapT :: (forall b. Data b => b -> b) -> Alt f a -> Alt f a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Alt f a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Alt f a -> r # gmapQ :: (forall d. Data d => d -> u) -> Alt f a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Alt f a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Alt f a -> m (Alt f a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Alt f a -> m (Alt f a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Alt f a -> m (Alt f a) # | |||||
| Enum (f a) => Enum (Alt f a) # | Since: base-4.8.0.0 | ||||
| Generic (Alt f a) # | |||||
Defined in GHC.Internal.Data.Semigroup.Internal Associated Types
| |||||
| Num (f a) => Num (Alt f a) # | Since: base-4.8.0.0 | ||||
| Read (f a) => Read (Alt f a) # | Since: base-4.8.0.0 | ||||
| Show (f a) => Show (Alt f a) # | Since: base-4.8.0.0 | ||||
| type Rep1 (Alt f :: k -> Type) # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||
| type Rep (Alt f a) # | Since: base-4.8.0.0 | ||||
Defined in GHC.Internal.Data.Semigroup.Internal | |||||