
Data.RepLib.SYB.Aliases  Portability  nonportable  Stability  experimental  Maintainer  sweirich@cis.upenn.edu 





Description 


Synopsis 

mkT :: (Rep a, Rep b) => (b > b) > a > a   mkQ :: (Rep a, Rep b) => r > (b > r) > a > r   mkM :: (Monad m, Rep a, Rep b) => (b > m b) > a > m a   mkMp :: (MonadPlus m, Rep a, Rep b) => (b > m b) > a > m a   mkR :: (MonadPlus m, Rep a, Rep b) => m b > m a   ext0 :: (Rep a, Rep b) => c a > c b > c a   extT :: (Rep a, Rep b) => (a > a) > (b > b) > a > a   extQ :: (Rep a, Rep b) => (a > q) > (b > q) > a > q   extM :: (Monad m, Rep a, Rep b) => (a > m a) > (b > m b) > a > m a   extMp :: (MonadPlus m, Rep a, Rep b) => (a > m a) > (b > m b) > a > m a   extB :: (Rep a, Rep b) => a > b > a   extR :: (Monad m, Rep a, Rep b) => m a > m b > m a   type GenericT = forall a. Rep a => a > a   type GenericQ r = forall a. Rep a => a > r   type GenericM m = forall a. Rep a => a > m a   type GenericB = forall a. Rep a => a   type GenericR m = forall a. Rep a => m a   type Generic c = forall a. Rep a => a > c a   data Generic' c = Generic' {}   newtype GenericT' = GT {}   newtype GenericQ' r = GQ {}   newtype GenericM' m = GM {}   orElse :: Maybe a > Maybe a > Maybe a   recoverMp :: MonadPlus m => GenericM m > GenericM m   recoverQ :: MonadPlus m => r > GenericQ (m r) > GenericQ (m r)   choiceMp :: MonadPlus m => GenericM m > GenericM m > GenericM m   choiceQ :: MonadPlus m => GenericQ (m r) > GenericQ (m r) > GenericQ (m r) 



Combinators to "make" generic functions via cast



Make a generic transformation;
start from a typespecific case;
preserve the term otherwise



Make a generic query;
start from a typespecific case;
return a constant otherwise



Make a generic monadic transformation;
start from a typespecific case;
resort to return otherwise



Make a generic monadic transformation for MonadPlus;
use "const mzero" (i.e., failure) instead of return as default.



Make a generic builder;
start from a typespecific ase;
resort to no build (i.e., mzero) otherwise



Flexible type extension


extT :: (Rep a, Rep b) => (a > a) > (b > b) > a > a  Source 

Extend a generic transformation by a typespecific case


extQ :: (Rep a, Rep b) => (a > q) > (b > q) > a > q  Source 

Extend a generic query by a typespecific case



Extend a generic monadic transformation by a typespecific case



Extend a generic MonadPlus transformation by a typespecific case



Extend a generic builder



Extend a generic reader


Type synonyms for generic function types


type GenericT = forall a. Rep a => a > a  Source 

Generic transformations,
i.e., take an "a" and return an "a"


type GenericQ r = forall a. Rep a => a > r  Source 

Generic queries of type "r",
i.e., take any "a" and return an "r"


type GenericM m = forall a. Rep a => a > m a  Source 

Generic monadic transformations,
i.e., take an "a" and compute an "a"



Generic builders
i.e., produce an "a".


type GenericR m = forall a. Rep a => m a  Source 

Generic readers, say monadic builders,
i.e., produce an "a" with the help of a monad "m".


type Generic c = forall a. Rep a => a > c a  Source 

The general scheme underlying generic functions
assumed by gfoldl; there are isomorphisms such as
GenericT = Generic T.



Wrapped generic functions;
recall: [Generic c] would be legal but [Generic' c] not.
 Constructors  



Other firstclass polymorphic wrappers
 Constructors  






Constructors  GM   unGM :: Rep a => a > m a  




Inredients of generic functions



Leftbiased choice on maybies


Function combinators on generic functions



Recover from the failure of monadic transformation by identity



Recover from the failure of monadic query by a constant



Choice for monadic transformations



Choice for monadic queries


Type extension for unary type constructors


Produced by Haddock version 2.4.2 