semigroupoids-5.3.7: Semigroupoids: Category sans id
Copyright(C) 2011-2015 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityprovisional
Portabilityportable
Safe HaskellSafe
LanguageHaskell2010

Data.Semigroup.Foldable

Description

 
Synopsis

Documentation

class Foldable t => Foldable1 t where Source #

Minimal complete definition

Nothing

Methods

fold1 :: Semigroup m => t m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> t a -> m Source #

toNonEmpty :: t a -> NonEmpty a Source #

Instances

Instances details
Foldable1 Complex Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Complex m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Complex a -> m Source #

toNonEmpty :: Complex a -> NonEmpty a Source #

Foldable1 Identity Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Identity m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Identity a -> m Source #

toNonEmpty :: Identity a -> NonEmpty a Source #

Foldable1 First Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => First m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> First a -> m Source #

toNonEmpty :: First a -> NonEmpty a Source #

Foldable1 Last Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Last m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Last a -> m Source #

toNonEmpty :: Last a -> NonEmpty a Source #

Foldable1 Max Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Max m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Max a -> m Source #

toNonEmpty :: Max a -> NonEmpty a Source #

Foldable1 Min Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Min m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Min a -> m Source #

toNonEmpty :: Min a -> NonEmpty a Source #

Foldable1 Dual Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Dual m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Dual a -> m Source #

toNonEmpty :: Dual a -> NonEmpty a Source #

Foldable1 Product Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Product m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Product a -> m Source #

toNonEmpty :: Product a -> NonEmpty a Source #

Foldable1 Sum Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Sum m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Sum a -> m Source #

toNonEmpty :: Sum a -> NonEmpty a Source #

Foldable1 Par1 Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Par1 m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Par1 a -> m Source #

toNonEmpty :: Par1 a -> NonEmpty a Source #

Foldable1 Tree Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Tree m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Tree a -> m Source #

toNonEmpty :: Tree a -> NonEmpty a Source #

Foldable1 NonEmpty Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => NonEmpty m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> NonEmpty a -> m Source #

toNonEmpty :: NonEmpty a -> NonEmpty a Source #

Foldable1 (V1 :: Type -> Type) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => V1 m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> V1 a -> m Source #

toNonEmpty :: V1 a -> NonEmpty a Source #

Foldable1 f => Foldable1 (Lift f) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Lift f m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Lift f a -> m Source #

toNonEmpty :: Lift f a -> NonEmpty a Source #

Foldable1 ((,) a) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => (a, m) -> m Source #

foldMap1 :: Semigroup m => (a0 -> m) -> (a, a0) -> m Source #

toNonEmpty :: (a, a0) -> NonEmpty a0 Source #

Foldable1 f => Foldable1 (Alt f) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Alt f m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Alt f a -> m Source #

toNonEmpty :: Alt f a -> NonEmpty a Source #

Foldable1 f => Foldable1 (Rec1 f) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Rec1 f m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Rec1 f a -> m Source #

toNonEmpty :: Rec1 f a -> NonEmpty a Source #

Bifoldable1 p => Foldable1 (Join p) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Join p m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Join p a -> m Source #

toNonEmpty :: Join p a -> NonEmpty a Source #

Foldable1 (Tagged a) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Tagged a m -> m Source #

foldMap1 :: Semigroup m => (a0 -> m) -> Tagged a a0 -> m Source #

toNonEmpty :: Tagged a a0 -> NonEmpty a0 Source #

Foldable1 f => Foldable1 (Backwards f) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Backwards f m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Backwards f a -> m Source #

toNonEmpty :: Backwards f a -> NonEmpty a Source #

Foldable1 m => Foldable1 (IdentityT m) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m0 => IdentityT m m0 -> m0 Source #

foldMap1 :: Semigroup m0 => (a -> m0) -> IdentityT m a -> m0 Source #

toNonEmpty :: IdentityT m a -> NonEmpty a Source #

Foldable1 f => Foldable1 (Reverse f) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Reverse f m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Reverse f a -> m Source #

toNonEmpty :: Reverse f a -> NonEmpty a Source #

(Foldable1 f, Foldable1 g) => Foldable1 (Product f g) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Product f g m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Product f g a -> m Source #

toNonEmpty :: Product f g a -> NonEmpty a Source #

(Foldable1 f, Foldable1 g) => Foldable1 (Sum f g) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Sum f g m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Sum f g a -> m Source #

toNonEmpty :: Sum f g a -> NonEmpty a Source #

(Foldable1 f, Foldable1 g) => Foldable1 (f :*: g) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => (f :*: g) m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> (f :*: g) a -> m Source #

toNonEmpty :: (f :*: g) a -> NonEmpty a Source #

(Foldable1 f, Foldable1 g) => Foldable1 (f :+: g) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => (f :+: g) m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> (f :+: g) a -> m Source #

toNonEmpty :: (f :+: g) a -> NonEmpty a Source #

(Foldable1 f, Foldable1 g) => Foldable1 (Compose f g) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Compose f g m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> Compose f g a -> m Source #

toNonEmpty :: Compose f g a -> NonEmpty a Source #

(Foldable1 f, Foldable1 g) => Foldable1 (f :.: g) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => (f :.: g) m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> (f :.: g) a -> m Source #

toNonEmpty :: (f :.: g) a -> NonEmpty a Source #

Foldable1 f => Foldable1 (M1 i c f) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => M1 i c f m -> m Source #

foldMap1 :: Semigroup m => (a -> m) -> M1 i c f a -> m Source #

toNonEmpty :: M1 i c f a -> NonEmpty a Source #

Foldable1 g => Foldable1 (Joker g a) Source # 
Instance details

Defined in Data.Semigroup.Foldable.Class

Methods

fold1 :: Semigroup m => Joker g a m -> m Source #

foldMap1 :: Semigroup m => (a0 -> m) -> Joker g a a0 -> m Source #

toNonEmpty :: Joker g a a0 -> NonEmpty a0 Source #

intercalate1 :: (Foldable1 t, Semigroup m) => m -> t m -> m Source #

Insert an m between each pair of t m. Equivalent to intercalateMap1 with id as the second argument.

>>> intercalate1 ", " $ "hello" :| ["how", "are", "you"]
"hello, how, are, you"
>>> intercalate1 ", " $ "hello" :| []
"hello"
>>> intercalate1 mempty $ "I" :| ["Am", "Fine", "You?"]
"IAmFineYou?"

intercalateMap1 :: (Foldable1 t, Semigroup m) => m -> (a -> m) -> t a -> m Source #

Insert m between each pair of m derived from a.

>>> intercalateMap1 " " show $ True :| [False, True]
"True False True"
>>> intercalateMap1 " " show $ True :| []
"True"

traverse1_ :: (Foldable1 t, Apply f) => (a -> f b) -> t a -> f () Source #

for1_ :: (Foldable1 t, Apply f) => t a -> (a -> f b) -> f () Source #

sequenceA1_ :: (Foldable1 t, Apply f) => t (f a) -> f () Source #

foldMapDefault1 :: (Foldable1 t, Monoid m) => (a -> m) -> t a -> m Source #

Usable default for foldMap, but only if you define foldMap1 yourself

asum1 :: (Foldable1 t, Alt m) => t (m a) -> m a Source #

foldrM1 :: (Foldable1 t, Monad m) => (a -> a -> m a) -> t a -> m a Source #

Monadic fold over the elements of a non-empty structure, associating to the right, i.e. from right to left.

let g = (=<<) . f
in foldrM1 f (x1 :| [x2, ..., xn]) == x1 `g` (x2 `g` ... (xn-1 `f` xn)...)

foldlM1 :: (Foldable1 t, Monad m) => (a -> a -> m a) -> t a -> m a Source #

Monadic fold over the elements of a non-empty structure, associating to the left, i.e. from left to right.

let g = flip $ (=<<) . f
in foldlM1 f (x1 :| [x2, ..., xn]) == (...((x1 `f` x2) `g` x2) `g`...) `g` xn