folds-0.7.1: Beautiful Folding

Safe HaskellTrustworthy
LanguageHaskell98

Data.Fold.M1

Synopsis

Documentation

data M1 a b Source

A semigroup reducer

Constructors

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

Instances

Arrow M1 Source 

Methods

arr :: (b -> c) -> M1 b c

first :: M1 b c -> M1 (b, d) (c, d)

second :: M1 b c -> M1 (d, b) (d, c)

(***) :: M1 b c -> M1 b' c' -> M1 (b, b') (c, c')

(&&&) :: M1 b c -> M1 b c' -> M1 b (c, c')

ArrowChoice M1 Source 

Methods

left :: M1 b c -> M1 (Either b d) (Either c d)

right :: M1 b c -> M1 (Either d b) (Either d c)

(+++) :: M1 b c -> M1 b' c' -> M1 (Either b b') (Either c c')

(|||) :: M1 b d -> M1 c d -> M1 (Either b c) d

Corepresentable M1 Source 

Associated Types

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

Methods

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

Profunctor M1 Source 

Methods

dimap :: (a -> b) -> (c -> d) -> M1 b c -> M1 a d

lmap :: (a -> b) -> M1 b c -> M1 a c

rmap :: (b -> c) -> M1 a b -> M1 a c

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

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

Choice M1 Source 

Methods

left' :: M1 a b -> M1 (Either a c) (Either b c)

right' :: M1 a b -> M1 (Either c a) (Either c b)

Closed M1 Source 

Methods

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

Strong M1 Source 

Methods

first' :: M1 a b -> M1 (a, c) (b, c)

second' :: M1 a b -> M1 (c, a) (c, b)

Costrong M1 Source 

Methods

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

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

Scan M1 Source 

Methods

prefix1 :: a -> M1 a b -> M1 a b Source

postfix1 :: M1 a b -> a -> M1 a b Source

run1 :: a -> M1 a b -> b Source

interspersing :: a -> M1 a b -> M1 a b Source

AsRM1 M1 Source 

Methods

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

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

Category * M1 Source 

Methods

id :: M1 a a

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

Cosieve M1 FreeSemigroup Source 

Methods

cosieve :: M1 a b -> FreeSemigroup a -> b

Semigroupoid * M1 Source 

Methods

o :: M1 j k1 -> M1 i j -> M1 i k1

Monad (M1 a) Source 

Methods

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

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

return :: b -> M1 a b

fail :: String -> M1 a b

Functor (M1 a) Source 

Methods

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

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

MonadFix (M1 a) Source 

Methods

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

Applicative (M1 a) Source 

Methods

pure :: b -> M1 a b

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

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

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

Distributive (M1 a) Source 

Methods

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

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

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

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

Representable (M1 a) Source 

Associated Types

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

Methods

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

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

MonadZip (M1 a) Source 

Methods

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

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

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

Pointed (M1 a) Source 

Methods

point :: b -> M1 a b

Apply (M1 a) Source 

Methods

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

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

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

MonadReader (FreeSemigroup a) (M1 a) Source 

Methods

ask :: M1 a (FreeSemigroup a)

local :: (FreeSemigroup a -> FreeSemigroup a) -> M1 a b -> M1 a b

reader :: (FreeSemigroup a -> b) -> M1 a b

type Corep M1 = FreeSemigroup Source 
type Rep (M1 a) = FreeSemigroup a Source 

runM1 :: Foldable1 f => f a -> M1 a b -> b Source