folds-0.7.8: Beautiful Folding
Safe HaskellTrustworthy
LanguageHaskell2010

Data.Fold.M

Description

Unlike L and R this Comonad is based on a (->) r Comonad for a Monoid r rather than than on the Store r Comonad.

Synopsis
  • data M a b = forall m. M (m -> b) (a -> m) (m -> m -> m) m

Documentation

data M a b Source #

A foldMap caught in amber. a.k.a. a monoidal reducer

Constructors

forall m. M (m -> b) (a -> m) (m -> m -> m) m 

Instances

Instances details
Profunctor M Source # 
Instance details

Defined in Data.Fold.M

Methods

dimap :: (a -> b) -> (c -> d) -> M b c -> M a d #

lmap :: (a -> b) -> M b c -> M a c #

rmap :: (b -> c) -> M a b -> M a c #

(#.) :: forall a b c q. Coercible c b => q b c -> M a b -> M a c #

(.#) :: forall a b c q. Coercible b a => M b c -> q a b -> M a c #

Costrong M Source # 
Instance details

Defined in Data.Fold.M

Methods

unfirst :: M (a, d) (b, d) -> M a b #

unsecond :: M (d, a) (d, b) -> M a b #

Corepresentable M Source # 
Instance details

Defined in Data.Fold.M

Associated Types

type Corep M :: Type -> Type #

Methods

cotabulate :: (Corep M d -> c) -> M d c #

Choice M Source # 
Instance details

Defined in Data.Fold.M

Methods

left' :: M a b -> M (Either a c) (Either b c) #

right' :: M a b -> M (Either c a) (Either c b) #

Closed M Source # 
Instance details

Defined in Data.Fold.M

Methods

closed :: M a b -> M (x -> a) (x -> b) #

Folding M Source #

efficient prefix, efficient postfix

Instance details

Defined in Data.Fold.M

Methods

prefix :: Foldable t => t a -> M a b -> M a b Source #

prefixOf :: Fold s a -> s -> M a b -> M a b Source #

postfix :: Foldable t => M a b -> t a -> M a b Source #

postfixOf :: Fold s a -> M a b -> s -> M a b Source #

run :: Foldable t => t a -> M a b -> b Source #

runOf :: Fold s a -> s -> M a b -> b Source #

filtering :: (a -> Bool) -> M a b -> M a b Source #

Scan M Source # 
Instance details

Defined in Data.Fold.M

Methods

prefix1 :: a -> M a b -> M a b Source #

postfix1 :: M a b -> a -> M a b Source #

run1 :: a -> M a b -> b Source #

interspersing :: a -> M a b -> M a b Source #

AsRM M Source #

We can convert from a monoidal fold to a lazy right fold

Instance details

Defined in Data.Fold

Methods

asM :: M a b -> M a b Source #

asR :: M a b -> R a b Source #

AsRM1 M Source # 
Instance details

Defined in Data.Fold

Methods

asM1 :: M a b -> M1 a b Source #

asR1 :: M a b -> R1 a b Source #

Cosieve M FreeMonoid Source # 
Instance details

Defined in Data.Fold.M

Methods

cosieve :: M a b -> FreeMonoid a -> b #

Monad (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

(>>=) :: M a a0 -> (a0 -> M a b) -> M a b #

(>>) :: M a a0 -> M a b -> M a b #

return :: a0 -> M a a0 #

Functor (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

fmap :: (a0 -> b) -> M a a0 -> M a b #

(<$) :: a0 -> M a b -> M a a0 #

MonadFix (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

mfix :: (a0 -> M a a0) -> M a a0 #

Applicative (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

pure :: a0 -> M a a0 #

(<*>) :: M a (a0 -> b) -> M a a0 -> M a b #

liftA2 :: (a0 -> b -> c) -> M a a0 -> M a b -> M a c #

(*>) :: M a a0 -> M a b -> M a b #

(<*) :: M a a0 -> M a b -> M a a0 #

Distributive (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

distribute :: Functor f => f (M a a0) -> M a (f a0) #

collect :: Functor f => (a0 -> M a b) -> f a0 -> M a (f b) #

distributeM :: Monad m => m (M a a0) -> M a (m a0) #

collectM :: Monad m => (a0 -> M a b) -> m a0 -> M a (m b) #

Representable (M a) Source # 
Instance details

Defined in Data.Fold.M

Associated Types

type Rep (M a) #

Methods

tabulate :: (Rep (M a) -> a0) -> M a a0 #

index :: M a a0 -> Rep (M a) -> a0 #

MonadZip (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

mzip :: M a a0 -> M a b -> M a (a0, b) #

mzipWith :: (a0 -> b -> c) -> M a a0 -> M a b -> M a c #

munzip :: M a (a0, b) -> (M a a0, M a b) #

Comonad (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

extract :: M a a0 -> a0 #

duplicate :: M a a0 -> M a (M a a0) #

extend :: (M a a0 -> b) -> M a a0 -> M a b #

ComonadApply (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

(<@>) :: M a (a0 -> b) -> M a a0 -> M a b #

(@>) :: M a a0 -> M a b -> M a b #

(<@) :: M a a0 -> M a b -> M a a0 #

Apply (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

(<.>) :: M a (a0 -> b) -> M a a0 -> M a b #

(.>) :: M a a0 -> M a b -> M a b #

(<.) :: M a a0 -> M a b -> M a a0 #

liftF2 :: (a0 -> b -> c) -> M a a0 -> M a b -> M a c #

Bind (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

(>>-) :: M a a0 -> (a0 -> M a b) -> M a b #

join :: M a (M a a0) -> M a a0 #

Extend (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

duplicated :: M a a0 -> M a (M a a0) #

extended :: (M a a0 -> b) -> M a a0 -> M a b #

MonadReader (FreeMonoid a) (M a) Source # 
Instance details

Defined in Data.Fold.M

Methods

ask :: M a (FreeMonoid a) #

local :: (FreeMonoid a -> FreeMonoid a) -> M a a0 -> M a a0 #

reader :: (FreeMonoid a -> a0) -> M a a0 #

type Corep M Source # 
Instance details

Defined in Data.Fold.M

type Rep (M a) Source # 
Instance details

Defined in Data.Fold.M

type Rep (M a) = FreeMonoid a