folds-0.7.4: Beautiful Folding

Safe HaskellTrustworthy
LanguageHaskell98

Data.Fold.L1

Synopsis

Documentation

data L1 a b Source #

A Mealy Machine

Constructors

L1 (c -> b) (c -> a -> c) (a -> c) 

Instances

Arrow L1 Source # 

Methods

arr :: (b -> c) -> L1 b c #

first :: L1 b c -> L1 (b, d) (c, d) #

second :: L1 b c -> L1 (d, b) (d, c) #

(***) :: L1 b c -> L1 b' c' -> L1 (b, b') (c, c') #

(&&&) :: L1 b c -> L1 b c' -> L1 b (c, c') #

ArrowChoice L1 Source # 

Methods

left :: L1 b c -> L1 (Either b d) (Either c d) #

right :: L1 b c -> L1 (Either d b) (Either d c) #

(+++) :: L1 b c -> L1 b' c' -> L1 (Either b b') (Either c c') #

(|||) :: L1 b d -> L1 c d -> L1 (Either b c) d #

Corepresentable L1 Source # 

Associated Types

type Corep (L1 :: * -> * -> *) :: * -> * #

Methods

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

Profunctor L1 Source # 

Methods

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

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

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

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

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

Choice L1 Source # 

Methods

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

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

Closed L1 Source # 

Methods

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

Strong L1 Source # 

Methods

first' :: L1 a b -> L1 (a, c) (b, c) #

second' :: L1 a b -> L1 (c, a) (c, b) #

Costrong L1 Source # 

Methods

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

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

Scan L1 Source # 

Methods

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

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

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

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

AsL1' L1 Source # 

Methods

asL1' :: L1 a b -> L1' a b Source #

AsRM1 L1 Source # 

Methods

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

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

Cosieve L1 NonEmpty Source # 

Methods

cosieve :: L1 a b -> NonEmpty a -> b #

Monad (L1 a) Source # 

Methods

(>>=) :: L1 a a -> (a -> L1 a b) -> L1 a b #

(>>) :: L1 a a -> L1 a b -> L1 a b #

return :: a -> L1 a a #

fail :: String -> L1 a a #

Functor (L1 a) Source # 

Methods

fmap :: (a -> b) -> L1 a a -> L1 a b #

(<$) :: a -> L1 a b -> L1 a a #

MonadFix (L1 a) Source # 

Methods

mfix :: (a -> L1 a a) -> L1 a a #

Applicative (L1 a) Source # 

Methods

pure :: a -> L1 a a #

(<*>) :: L1 a (a -> b) -> L1 a a -> L1 a b #

(*>) :: L1 a a -> L1 a b -> L1 a b #

(<*) :: L1 a a -> L1 a b -> L1 a a #

Distributive (L1 a) Source # 

Methods

distribute :: Functor f => f (L1 a a) -> L1 a (f a) #

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

distributeM :: Monad m => m (L1 a a) -> L1 a (m a) #

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

Representable (L1 a) Source # 

Associated Types

type Rep (L1 a :: * -> *) :: * #

Methods

tabulate :: (Rep (L1 a) -> a) -> L1 a a #

index :: L1 a a -> Rep (L1 a) -> a #

MonadZip (L1 a) Source # 

Methods

mzip :: L1 a a -> L1 a b -> L1 a (a, b) #

mzipWith :: (a -> b -> c) -> L1 a a -> L1 a b -> L1 a c #

munzip :: L1 a (a, b) -> (L1 a a, L1 a b) #

Pointed (L1 a) Source # 

Methods

point :: a -> L1 a a #

Apply (L1 a) Source # 

Methods

(<.>) :: L1 a (a -> b) -> L1 a a -> L1 a b #

(.>) :: L1 a a -> L1 a b -> L1 a b #

(<.) :: L1 a a -> L1 a b -> L1 a a #

Category * L1 Source # 

Methods

id :: cat a a #

(.) :: cat b c -> cat a b -> cat a c #

Semigroupoid * L1 Source # 

Methods

o :: c j k1 -> c i j -> c i k1 #

MonadReader (NonEmpty a) (L1 a) Source # 

Methods

ask :: L1 a (NonEmpty a) #

local :: (NonEmpty a -> NonEmpty a) -> L1 a a -> L1 a a #

reader :: (NonEmpty a -> a) -> L1 a a #

type Corep L1 Source # 
type Rep (L1 a) Source # 
type Rep (L1 a) = NonEmpty a