
Generics.Regular.Functions  Portability  nonportable  Stability  experimental  Maintainer  generics@haskell.org 





Description 
Summary: Generic functionality for regular dataypes: mapM, flatten, zip,
equality, show, value generation and fold.


Synopsis 

Functor (fmap)   class GMap f where    class CrushR f where  crushr :: (a > b > b) > b > f a > b 
  flatten :: CrushR f => f a > [a]   class Zip f where  fzipM :: Monad m => (a > b > m c) > f a > f b > m (f c) 
  fzip :: (Zip f, Monad m) => (a > b > c) > f a > f b > m (f c)   fzip' :: Zip f => (a > b > c) > f a > f b > f c   geq :: (b ~ PF a, Regular a, CrushR b, Zip b) => a > a > Bool   class GShow f where    gshow :: (Regular a, GShow (PF a)) => a > ShowS   class LRBase a where    class LR f where    left :: (Regular a, LR (PF a)) => a   right :: (Regular a, LR (PF a)) => a   type family Alg f r :: *   type Algebra a r = Alg (PF a) r   class Fold f where    fold :: (Regular a, Fold (PF a), Functor (PF a)) => Algebra a r > a > r   (&) :: a > b > (a, b) 



Functorial map function


Functor (fmap) 

Monadic functorial map function



The GMap class defines a monadic functorial map.
  Methods    Instances  


Crush right functions



The CrushR class defines a rightassociative crush on functorial values.
  Methods  crushr :: (a > b > b) > b > f a > b  Source 

  Instances  



Flatten a structure by collecting all the elements present.


Zip functions



The Zip class defines a monadic zip on functorial values.
  Methods  fzipM :: Monad m => (a > b > m c) > f a > f b > m (f c)  Source 

  Instances  


fzip :: (Zip f, Monad m) => (a > b > c) > f a > f b > m (f c)  Source 

Functorial zip with a nonmonadic function, resulting in a monadic value.


fzip' :: Zip f => (a > b > c) > f a > f b > f c  Source 

Partial functorial zip with a nonmonadic function.


Equality function



Equality on values based on their structural representation.


Show function



The GShow class defines a show on values.
  Methods    Instances  




Functions for generating values that are different on toplevel



The LRBase class defines two functions, leftb and rightb, which
should produce different values.
  Methods    Instances  



The LR class defines two functions, leftf and rightf, which should
produce different functorial values.
  Methods    Instances  



Produces a value which should be different from the value returned by
right.



Produces a value which should be different from the value returned by
left.


Generic folding


type family Alg f r :: *  Source 





The class fold explains how to convert an algebra
Alg into a function from functor to result.
  Methods    Instances  



Fold with convenient algebras.



For constructing algebras it is helpful to use this pairing combinator.


Produced by Haddock version 2.4.2 