folds-0.7.1: Beautiful Folding

Safe HaskellTrustworthy
LanguageHaskell98

Data.Fold.R

Synopsis

Documentation

data R a b Source

right folds / a reversed Moore machine

Constructors

forall r . R (r -> b) (a -> r -> r) r 

Instances

Corepresentable R Source 

Associated Types

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

Methods

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

Profunctor R Source 

Methods

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

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

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

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

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

Choice R Source 

Methods

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

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

Closed R Source 

Methods

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

Costrong R Source 

Methods

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

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

Folding R Source

leaky prefix, efficient postfix

Methods

prefix :: Foldable t => t a -> R a b -> R a b Source

prefixOf :: Fold s a -> s -> R a b -> R a b Source

postfix :: Foldable t => R a b -> t a -> R a b Source

postfixOf :: Fold s a -> R a b -> s -> R a b Source

run :: Foldable t => t a -> R a b -> b Source

runOf :: Fold s a -> s -> R a b -> b Source

filtering :: (a -> Bool) -> R a b -> R a b Source

Scan R Source 

Methods

prefix1 :: a -> R a b -> R a b Source

postfix1 :: R a b -> a -> R a b Source

run1 :: a -> R a b -> b Source

interspersing :: a -> R a b -> R a b Source

AsRM R Source

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

Methods

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

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

AsRM1 R Source 

Methods

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

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

Cosieve R [] Source 

Methods

cosieve :: R a b -> [a] -> b

Monad (R a) Source 

Methods

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

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

return :: b -> R a b

fail :: String -> R a b

Functor (R a) Source 

Methods

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

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

MonadFix (R a) Source 

Methods

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

Applicative (R a) Source 

Methods

pure :: b -> R a b

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

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

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

Distributive (R a) Source 

Methods

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

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

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

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

Representable (R a) Source 

Associated Types

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

Methods

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

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

MonadZip (R a) Source 

Methods

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

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

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

Comonad (R a) Source 

Methods

extract :: R a b -> b

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

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

ComonadApply (R a) Source 

Methods

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

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

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

Apply (R a) Source 

Methods

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

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

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

Bind (R a) Source 

Methods

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

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

Extend (R a) Source 

Methods

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

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

MonadReader [a] (R a) Source 

Methods

ask :: R a [a]

local :: ([a] -> [a]) -> R a b -> R a b

reader :: ([a] -> b) -> R a b

type Corep R = [] Source 
type Rep (R a) = [a] Source