folds-0.7.5: Beautiful Folding
Data.Fold.R
data R a b Source #
right folds / a reversed Moore machine
Constructors
Defined in Data.Fold.R
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 => q b c -> R a b -> R a c #
(.#) :: Coercible b a => R b c -> q a b -> R a c #
Associated Types
type Corep R :: Type -> Type #
cotabulate :: (Corep R d -> c) -> R d c #
left' :: R a b -> R (Either a c) (Either b c) #
right' :: R a b -> R (Either c a) (Either c b) #
closed :: R a b -> R (x -> a) (x -> b) #
unfirst :: R (a, d) (b, d) -> R a b #
unsecond :: R (d, a) (d, b) -> R a b #
leaky prefix, efficient postfix
prefix
postfix
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 #
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 #
We can convert from a lazy right fold to a monoidal fold
Defined in Data.Fold
asM :: R a b -> M a b Source #
asR :: R a b -> R a b Source #
asM1 :: R a b -> M1 a b Source #
asR1 :: R a b -> R1 a b Source #
cosieve :: R a b -> [a] -> b #
(>>=) :: R a a0 -> (a0 -> R a b) -> R a b #
(>>) :: R a a0 -> R a b -> R a b #
return :: a0 -> R a a0 #
fail :: String -> R a a0 #
fmap :: (a0 -> b) -> R a a0 -> R a b #
(<$) :: a0 -> R a b -> R a a0 #
mfix :: (a0 -> R a a0) -> R a a0 #
pure :: a0 -> R a a0 #
(<*>) :: R a (a0 -> b) -> R a a0 -> R a b #
liftA2 :: (a0 -> b -> c) -> R a a0 -> R a b -> R a c #
(*>) :: R a a0 -> R a b -> R a b #
(<*) :: R a a0 -> R a b -> R a a0 #
distribute :: Functor f => f (R a a0) -> R a (f a0) #
collect :: Functor f => (a0 -> R a b) -> f a0 -> R a (f b) #
distributeM :: Monad m => m (R a a0) -> R a (m a0) #
collectM :: Monad m => (a0 -> R a b) -> m a0 -> R a (m b) #
type Rep (R a) :: Type #
tabulate :: (Rep (R a) -> a0) -> R a a0 #
index :: R a a0 -> Rep (R a) -> a0 #
mzip :: R a a0 -> R a b -> R a (a0, b) #
mzipWith :: (a0 -> b -> c) -> R a a0 -> R a b -> R a c #
munzip :: R a (a0, b) -> (R a a0, R a b) #
extract :: R a a0 -> a0 #
duplicate :: R a a0 -> R a (R a a0) #
extend :: (R a a0 -> b) -> R a a0 -> R a b #
(<@>) :: R a (a0 -> b) -> R a a0 -> R a b #
(@>) :: R a a0 -> R a b -> R a b #
(<@) :: R a a0 -> R a b -> R a a0 #
(<.>) :: R a (a0 -> b) -> R a a0 -> R a b #
(.>) :: R a a0 -> R a b -> R a b #
(<.) :: R a a0 -> R a b -> R a a0 #
liftF2 :: (a0 -> b -> c) -> R a a0 -> R a b -> R a c #
(>>-) :: R a a0 -> (a0 -> R a b) -> R a b #
join :: R a (R a a0) -> R a a0 #
duplicated :: R a a0 -> R a (R a a0) #
extended :: (R a a0 -> b) -> R a a0 -> R a b #
ask :: R a [a] #
local :: ([a] -> [a]) -> R a a0 -> R a a0 #
reader :: ([a] -> a0) -> R a a0 #