yap-0.3.0: yet another prelude - a simplistic refactoring with algebraic classes
Copyright(c) Ross Paterson 2024
LicenseBSD-style (see the file LICENSE)
MaintainerR.Paterson@city.ac.uk
Stabilityprovisional
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Data.YAP.MonoidAdaptors

Description

Generalized versions of the monoid adaptor types from Data.Semigroup.

Synopsis

Documentation

newtype Sum a Source #

A redefinition of the Sum adaptor from Data.Semigroup with more general instances.

Constructors

Sum a 

Instances

Instances details
Foldable Sum Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

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 #

toList :: Sum a -> [a] #

null :: Sum a -> Bool #

length :: Sum a -> Int #

elem :: Eq a => a -> Sum a -> Bool #

maximum :: Ord a => Sum a -> a #

minimum :: Ord a => Sum a -> a #

sum :: Num a => Sum a -> a #

product :: Num a => Sum a -> a #

Traversable Sum Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

traverse :: Applicative f => (a -> f b) -> Sum a -> f (Sum b) #

sequenceA :: Applicative f => Sum (f a) -> f (Sum a) #

mapM :: Monad m => (a -> m b) -> Sum a -> m (Sum b) #

sequence :: Monad m => Sum (m a) -> m (Sum a) #

Applicative Sum Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

pure :: a -> Sum a #

(<*>) :: Sum (a -> b) -> Sum a -> Sum b #

liftA2 :: (a -> b -> c) -> Sum a -> Sum b -> Sum c #

(*>) :: Sum a -> Sum b -> Sum b #

(<*) :: Sum a -> Sum b -> Sum a #

Functor Sum Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

fmap :: (a -> b) -> Sum a -> Sum b #

(<$) :: a -> Sum b -> Sum a #

Monad Sum Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(>>=) :: Sum a -> (a -> Sum b) -> Sum b #

(>>) :: Sum a -> Sum b -> Sum b #

return :: a -> Sum a #

Generic1 Sum Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Associated Types

type Rep1 Sum 
Instance details

Defined in Data.YAP.MonoidAdaptors

type Rep1 Sum = D1 ('MetaData "Sum" "Data.YAP.MonoidAdaptors" "yap-0.3.0-31t74kOZFJkRa9RMMIUvb" 'True) (C1 ('MetaCons "Sum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))

Methods

from1 :: Sum a -> Rep1 Sum a #

to1 :: Rep1 Sum a -> Sum a #

Data a => Data (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

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) #

toConstr :: Sum a -> Constr #

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) #

AdditiveMonoid a => Monoid (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

mempty :: Sum a #

mappend :: Sum a -> Sum a -> Sum a #

mconcat :: [Sum a] -> Sum a #

AdditiveMonoid a => Semigroup (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(<>) :: Sum a -> Sum a -> Sum a #

sconcat :: NonEmpty (Sum a) -> Sum a #

stimes :: Integral b => b -> Sum a -> Sum a #

Bounded a => Bounded (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

minBound :: Sum a #

maxBound :: Sum a #

Generic (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Associated Types

type Rep (Sum a) 
Instance details

Defined in Data.YAP.MonoidAdaptors

type Rep (Sum a) = D1 ('MetaData "Sum" "Data.YAP.MonoidAdaptors" "yap-0.3.0-31t74kOZFJkRa9RMMIUvb" 'True) (C1 ('MetaCons "Sum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Methods

from :: Sum a -> Rep (Sum a) x #

to :: Rep (Sum a) x -> Sum a #

Read a => Read (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Show a => Show (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

showsPrec :: Int -> Sum a -> ShowS #

show :: Sum a -> String #

showList :: [Sum a] -> ShowS #

Eq a => Eq (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(==) :: Sum a -> Sum a -> Bool #

(/=) :: Sum a -> Sum a -> Bool #

Ord a => Ord (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

compare :: Sum a -> Sum a -> Ordering #

(<) :: Sum a -> Sum a -> Bool #

(<=) :: Sum a -> Sum a -> Bool #

(>) :: Sum a -> Sum a -> Bool #

(>=) :: Sum a -> Sum a -> Bool #

max :: Sum a -> Sum a -> Sum a #

min :: Sum a -> Sum a -> Sum a #

AbelianGroup a => AbelianGroup (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(-) :: Sum a -> Sum a -> Sum a Source #

negate :: Sum a -> Sum a Source #

gtimes :: (AbelianGroup b, ToInteger b) => b -> Sum a -> Sum a Source #

AdditiveMonoid a => AdditiveMonoid (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(+) :: Sum a -> Sum a -> Sum a Source #

zero :: Sum a Source #

atimes :: ToInteger b => b -> Sum a -> Sum a Source #

Num a => Num (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

abs :: Sum a -> Sum a Source #

signum :: Sum a -> Sum a Source #

Ring a => Ring (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

fromInteger :: Integer -> Sum a Source #

Semiring a => Semiring (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(*) :: Sum a -> Sum a -> Sum a Source #

one :: Sum a Source #

fromNatural :: Natural -> Sum a Source #

rescale :: Sum a -> Sum a -> (Sum a, Sum a, Sum a -> Sum a) Source #

ToRational a => ToRational (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

toRational :: Sum a -> Rational Source #

type Rep1 Sum Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

type Rep1 Sum = D1 ('MetaData "Sum" "Data.YAP.MonoidAdaptors" "yap-0.3.0-31t74kOZFJkRa9RMMIUvb" 'True) (C1 ('MetaCons "Sum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))
type Rep (Sum a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

type Rep (Sum a) = D1 ('MetaData "Sum" "Data.YAP.MonoidAdaptors" "yap-0.3.0-31t74kOZFJkRa9RMMIUvb" 'True) (C1 ('MetaCons "Sum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

newtype Product a Source #

A redefinition of the Product adaptor from Data.Semigroup with more general instances.

Constructors

Product a 

Instances

Instances details
Foldable Product Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

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 #

toList :: Product a -> [a] #

null :: Product a -> Bool #

length :: Product a -> Int #

elem :: Eq a => a -> Product a -> Bool #

maximum :: Ord a => Product a -> a #

minimum :: Ord a => Product a -> a #

sum :: Num a => Product a -> a #

product :: Num a => Product a -> a #

Traversable Product Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

traverse :: Applicative f => (a -> f b) -> Product a -> f (Product b) #

sequenceA :: Applicative f => Product (f a) -> f (Product a) #

mapM :: Monad m => (a -> m b) -> Product a -> m (Product b) #

sequence :: Monad m => Product (m a) -> m (Product a) #

Applicative Product Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

pure :: a -> Product a #

(<*>) :: Product (a -> b) -> Product a -> Product b #

liftA2 :: (a -> b -> c) -> Product a -> Product b -> Product c #

(*>) :: Product a -> Product b -> Product b #

(<*) :: Product a -> Product b -> Product a #

Functor Product Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

fmap :: (a -> b) -> Product a -> Product b #

(<$) :: a -> Product b -> Product a #

Monad Product Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(>>=) :: Product a -> (a -> Product b) -> Product b #

(>>) :: Product a -> Product b -> Product b #

return :: a -> Product a #

Generic1 Product Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Associated Types

type Rep1 Product 
Instance details

Defined in Data.YAP.MonoidAdaptors

type Rep1 Product = D1 ('MetaData "Product" "Data.YAP.MonoidAdaptors" "yap-0.3.0-31t74kOZFJkRa9RMMIUvb" 'True) (C1 ('MetaCons "Product" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))

Methods

from1 :: Product a -> Rep1 Product a #

to1 :: Rep1 Product a -> Product a #

Data a => Data (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

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) #

Semiring a => Monoid (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

mempty :: Product a #

mappend :: Product a -> Product a -> Product a #

mconcat :: [Product a] -> Product a #

Semiring a => Semigroup (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(<>) :: Product a -> Product a -> Product a #

sconcat :: NonEmpty (Product a) -> Product a #

stimes :: Integral b => b -> Product a -> Product a #

Bounded a => Bounded (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Generic (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Associated Types

type Rep (Product a) 
Instance details

Defined in Data.YAP.MonoidAdaptors

type Rep (Product a) = D1 ('MetaData "Product" "Data.YAP.MonoidAdaptors" "yap-0.3.0-31t74kOZFJkRa9RMMIUvb" 'True) (C1 ('MetaCons "Product" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Methods

from :: Product a -> Rep (Product a) x #

to :: Rep (Product a) x -> Product a #

Read a => Read (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Show a => Show (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

showsPrec :: Int -> Product a -> ShowS #

show :: Product a -> String #

showList :: [Product a] -> ShowS #

Eq a => Eq (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(==) :: Product a -> Product a -> Bool #

(/=) :: Product a -> Product a -> Bool #

Ord a => Ord (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

compare :: Product a -> Product a -> Ordering #

(<) :: Product a -> Product a -> Bool #

(<=) :: Product a -> Product a -> Bool #

(>) :: Product a -> Product a -> Bool #

(>=) :: Product a -> Product a -> Bool #

max :: Product a -> Product a -> Product a #

min :: Product a -> Product a -> Product a #

AbelianGroup a => AbelianGroup (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(-) :: Product a -> Product a -> Product a Source #

negate :: Product a -> Product a Source #

gtimes :: (AbelianGroup b, ToInteger b) => b -> Product a -> Product a Source #

AdditiveMonoid a => AdditiveMonoid (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

(+) :: Product a -> Product a -> Product a Source #

zero :: Product a Source #

atimes :: ToInteger b => b -> Product a -> Product a Source #

Num a => Num (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Methods

abs :: Product a -> Product a Source #

signum :: Product a -> Product a Source #

Ring a => Ring (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

Semiring a => Semiring (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

ToRational a => ToRational (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

type Rep1 Product Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

type Rep1 Product = D1 ('MetaData "Product" "Data.YAP.MonoidAdaptors" "yap-0.3.0-31t74kOZFJkRa9RMMIUvb" 'True) (C1 ('MetaCons "Product" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))
type Rep (Product a) Source # 
Instance details

Defined in Data.YAP.MonoidAdaptors

type Rep (Product a) = D1 ('MetaData "Product" "Data.YAP.MonoidAdaptors" "yap-0.3.0-31t74kOZFJkRa9RMMIUvb" 'True) (C1 ('MetaCons "Product" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))