Copyright | (c) The University of Pennsylvania 2006 |
---|---|
License | BSD |
Maintainer | sweirich@cis.upenn.edu |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
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' {
- unGeneric' :: Generic c
- 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
mkT :: (Rep a, Rep b) => (b -> b) -> a -> a Source #
Make a generic transformation; start from a type-specific case; preserve the term otherwise
mkQ :: (Rep a, Rep b) => r -> (b -> r) -> a -> r Source #
Make a generic query; start from a type-specific case; return a constant otherwise
mkM :: (Monad m, Rep a, Rep b) => (b -> m b) -> a -> m a Source #
Make a generic monadic transformation; start from a type-specific case; resort to return otherwise
mkMp :: (MonadPlus m, Rep a, Rep b) => (b -> m b) -> a -> m a Source #
Make a generic monadic transformation for MonadPlus; use "const mzero" (i.e., failure) instead of return as default.
mkR :: (MonadPlus m, Rep a, Rep b) => m b -> m a Source #
Make a generic builder; start from a type-specific ase; resort to no build (i.e., mzero) otherwise
extT :: (Rep a, Rep b) => (a -> a) -> (b -> b) -> a -> a Source #
Extend a generic transformation by a type-specific case
extQ :: (Rep a, Rep b) => (a -> q) -> (b -> q) -> a -> q Source #
Extend a generic query by a type-specific case
extM :: (Monad m, Rep a, Rep b) => (a -> m a) -> (b -> m b) -> a -> m a Source #
Extend a generic monadic transformation by a type-specific case
extMp :: (MonadPlus m, Rep a, Rep b) => (a -> m a) -> (b -> m b) -> a -> m a Source #
Extend a generic MonadPlus transformation by a type-specific case
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"
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.
Generic' | |
|
Other first-class polymorphic wrappers
Inredients of generic functions
Function combinators on generic functions
recoverMp :: MonadPlus m => GenericM m -> GenericM m Source #
Recover from the failure of monadic transformation by identity
recoverQ :: MonadPlus m => r -> GenericQ (m r) -> GenericQ (m r) Source #
Recover from the failure of monadic query by a constant
choiceMp :: MonadPlus m => GenericM m -> GenericM m -> GenericM m Source #
Choice for monadic transformations
choiceQ :: MonadPlus m => GenericQ (m r) -> GenericQ (m r) -> GenericQ (m r) Source #
Choice for monadic queries