folds-0.7.1: Beautiful Folding

Safe HaskellTrustworthy
LanguageHaskell98

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

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

Corepresentable M Source 

Associated Types

type Corep (M :: * -> * -> *) :: * -> *

Methods

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

Profunctor M Source 

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

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

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

Choice M Source 

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 

Methods

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

Costrong M Source 

Methods

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

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

Folding M Source

efficient prefix, efficient postfix

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 

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

Methods

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

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

AsRM1 M Source 

Methods

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

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

Cosieve M FreeMonoid Source 

Methods

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

Monad (M a) Source 

Methods

(>>=) :: M a b -> (b -> M a c) -> M a c

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

return :: b -> M a b

fail :: String -> M a b

Functor (M a) Source 

Methods

fmap :: (b -> c) -> M a b -> M a c

(<$) :: b -> M a c -> M a b

MonadFix (M a) Source 

Methods

mfix :: (b -> M a b) -> M a b

Applicative (M a) Source 

Methods

pure :: b -> M a b

(<*>) :: M a (b -> c) -> M a b -> M a c

(*>) :: M a b -> M a c -> M a c

(<*) :: M a b -> M a c -> M a b

Distributive (M a) Source 

Methods

distribute :: Functor f => f (M a b) -> M a (f b)

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

distributeM :: Monad m => m (M a b) -> M a (m b)

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

Representable (M a) Source 

Associated Types

type Rep (M a :: * -> *) :: *

Methods

tabulate :: (Rep (M a) -> b) -> M a b

index :: M a b -> Rep (M a) -> b

MonadZip (M a) Source 

Methods

mzip :: M a b -> M a c -> M a (b, c)

mzipWith :: (b -> c -> d) -> M a b -> M a c -> M a d

munzip :: M a (b, c) -> (M a b, M a c)

Comonad (M a) Source 

Methods

extract :: M a b -> b

duplicate :: M a b -> M a (M a b)

extend :: (M a b -> c) -> M a b -> M a c

ComonadApply (M a) Source 

Methods

(<@>) :: M a (b -> c) -> M a b -> M a c

(@>) :: M a b -> M a c -> M a c

(<@) :: M a b -> M a c -> M a b

Apply (M a) Source 

Methods

(<.>) :: M a (b -> c) -> M a b -> M a c

(.>) :: M a b -> M a c -> M a c

(<.) :: M a b -> M a c -> M a b

Bind (M a) Source 

Methods

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

join :: M a (M a b) -> M a b

Extend (M a) Source 

Methods

duplicated :: M a b -> M a (M a b)

extended :: (M a b -> c) -> M a b -> M a c

MonadReader (FreeMonoid a) (M a) Source 

Methods

ask :: M a (FreeMonoid a)

local :: (FreeMonoid a -> FreeMonoid a) -> M a b -> M a b

reader :: (FreeMonoid a -> b) -> M a b

type Corep M = FreeMonoid Source 
type Rep (M a) = FreeMonoid a Source