yaya-0.4.2.1: Total recursion schemes.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Yaya.Pattern

Description

Common pattern functors (and instances for them).

Synopsis

Documentation

data XNor a b Source #

Isomorphic to 'Maybe (a, b)', it’s also the pattern functor for lists.

Constructors

Neither 
Both ~a b 

Instances

Instances details
Bifunctor XNor Source # 
Instance details

Defined in Yaya.Pattern

Methods

bimap :: (a -> b) -> (c -> d) -> XNor a c -> XNor b d #

first :: (a -> b) -> XNor a c -> XNor b c #

second :: (b -> c) -> XNor a b -> XNor a c #

Functor (XNor a) Source # 
Instance details

Defined in Yaya.Pattern

Methods

fmap :: (a0 -> b) -> XNor a a0 -> XNor a b #

(<$) :: a0 -> XNor a b -> XNor a a0 #

Foldable (XNor a) Source # 
Instance details

Defined in Yaya.Pattern

Methods

fold :: Monoid m => XNor a m -> m #

foldMap :: Monoid m => (a0 -> m) -> XNor a a0 -> m #

foldMap' :: Monoid m => (a0 -> m) -> XNor a a0 -> m #

foldr :: (a0 -> b -> b) -> b -> XNor a a0 -> b #

foldr' :: (a0 -> b -> b) -> b -> XNor a a0 -> b #

foldl :: (b -> a0 -> b) -> b -> XNor a a0 -> b #

foldl' :: (b -> a0 -> b) -> b -> XNor a a0 -> b #

foldr1 :: (a0 -> a0 -> a0) -> XNor a a0 -> a0 #

foldl1 :: (a0 -> a0 -> a0) -> XNor a a0 -> a0 #

toList :: XNor a a0 -> [a0] #

null :: XNor a a0 -> Bool #

length :: XNor a a0 -> Int #

elem :: Eq a0 => a0 -> XNor a a0 -> Bool #

maximum :: Ord a0 => XNor a a0 -> a0 #

minimum :: Ord a0 => XNor a a0 -> a0 #

sum :: Num a0 => XNor a a0 -> a0 #

product :: Num a0 => XNor a a0 -> a0 #

Traversable (XNor a) Source # 
Instance details

Defined in Yaya.Pattern

Methods

traverse :: Applicative f => (a0 -> f b) -> XNor a a0 -> f (XNor a b) #

sequenceA :: Applicative f => XNor a (f a0) -> f (XNor a a0) #

mapM :: Monad m => (a0 -> m b) -> XNor a a0 -> m (XNor a b) #

sequence :: Monad m => XNor a (m a0) -> m (XNor a a0) #

Corecursive ((->) :: Type -> Type -> Type) ([a] :: Type) (XNor a :: Type -> Type) Source # 
Instance details

Defined in Yaya.Fold.Native

Methods

ana :: forall (a0 :: k). Coalgebra (->) (XNor a) a0 -> a0 -> [a] Source #

Projectable ((->) :: Type -> Type -> Type) ([a] :: Type) (XNor a :: Type -> Type) Source # 
Instance details

Defined in Yaya.Fold

Methods

project :: Coalgebra (->) (XNor a) [a] Source #

Steppable ((->) :: Type -> Type -> Type) ([a] :: Type) (XNor a :: Type -> Type) Source # 
Instance details

Defined in Yaya.Fold

Methods

embed :: Algebra (->) (XNor a) [a] Source #

data AndMaybe a b Source #

Isomorphic to `(a, Maybe b)`, it’s also the pattern functor for non-empty lists.

Constructors

Only a 
Indeed ~a b 

Instances

Instances details
Bifunctor AndMaybe Source # 
Instance details

Defined in Yaya.Pattern

Methods

bimap :: (a -> b) -> (c -> d) -> AndMaybe a c -> AndMaybe b d #

first :: (a -> b) -> AndMaybe a c -> AndMaybe b c #

second :: (b -> c) -> AndMaybe a b -> AndMaybe a c #

Functor (AndMaybe a) Source # 
Instance details

Defined in Yaya.Pattern

Methods

fmap :: (a0 -> b) -> AndMaybe a a0 -> AndMaybe a b #

(<$) :: a0 -> AndMaybe a b -> AndMaybe a a0 #

Foldable (AndMaybe a) Source # 
Instance details

Defined in Yaya.Pattern

Methods

fold :: Monoid m => AndMaybe a m -> m #

foldMap :: Monoid m => (a0 -> m) -> AndMaybe a a0 -> m #

foldMap' :: Monoid m => (a0 -> m) -> AndMaybe a a0 -> m #

foldr :: (a0 -> b -> b) -> b -> AndMaybe a a0 -> b #

foldr' :: (a0 -> b -> b) -> b -> AndMaybe a a0 -> b #

foldl :: (b -> a0 -> b) -> b -> AndMaybe a a0 -> b #

foldl' :: (b -> a0 -> b) -> b -> AndMaybe a a0 -> b #

foldr1 :: (a0 -> a0 -> a0) -> AndMaybe a a0 -> a0 #

foldl1 :: (a0 -> a0 -> a0) -> AndMaybe a a0 -> a0 #

toList :: AndMaybe a a0 -> [a0] #

null :: AndMaybe a a0 -> Bool #

length :: AndMaybe a a0 -> Int #

elem :: Eq a0 => a0 -> AndMaybe a a0 -> Bool #

maximum :: Ord a0 => AndMaybe a a0 -> a0 #

minimum :: Ord a0 => AndMaybe a a0 -> a0 #

sum :: Num a0 => AndMaybe a a0 -> a0 #

product :: Num a0 => AndMaybe a a0 -> a0 #

Traversable (AndMaybe a) Source # 
Instance details

Defined in Yaya.Pattern

Methods

traverse :: Applicative f => (a0 -> f b) -> AndMaybe a a0 -> f (AndMaybe a b) #

sequenceA :: Applicative f => AndMaybe a (f a0) -> f (AndMaybe a a0) #

mapM :: Monad m => (a0 -> m b) -> AndMaybe a a0 -> m (AndMaybe a b) #

sequence :: Monad m => AndMaybe a (m a0) -> m (AndMaybe a a0) #

Corecursive ((->) :: Type -> Type -> Type) (NonEmpty a :: Type) (AndMaybe a :: Type -> Type) Source # 
Instance details

Defined in Yaya.Fold.Native

Methods

ana :: forall (a0 :: k). Coalgebra (->) (AndMaybe a) a0 -> a0 -> NonEmpty a Source #

Projectable ((->) :: Type -> Type -> Type) (NonEmpty a :: Type) (AndMaybe a :: Type -> Type) Source # 
Instance details

Defined in Yaya.Fold

Methods

project :: Coalgebra (->) (AndMaybe a) (NonEmpty a) Source #

Steppable ((->) :: Type -> Type -> Type) (NonEmpty a :: Type) (AndMaybe a :: Type -> Type) Source # 
Instance details

Defined in Yaya.Fold

Methods

embed :: Algebra (->) (AndMaybe a) (NonEmpty a) Source #