| Safe Haskell | Safe | 
|---|---|
| Language | Haskell2010 | 
Test.Testable.Data
Description
Support for testing data type declarations.
(c) 2014 Vladimír Štill
Synopsis
- showData :: DataDecl -> String
 - reflectData :: forall a. Data a => a -> DataDecl
 - conArgs :: Data a => a -> [TypeRep]
 - conArgsNames :: Data a => a -> [String]
 - constrArgs :: forall witness. Data witness => witness -> Constr -> [TypeRep]
 - constrArgsNames :: forall witness. Data witness => witness -> Constr -> [String]
 - data DataDecl = DataDecl {
- dataDeclName :: String
 - dataDeclCons :: [DataCon]
 
 - data DataCon = DataCon {
- dataConName :: String
 - dataConFields :: [String]
 
 - canonizeData :: DataDecl -> DataDecl
 - deepCanonizeData :: DataDecl -> DataDecl
 
Documentation
reflectData :: forall a. Data a => a -> DataDecl #
infer data declaration of given type it works well for monomorphic ATDs, for polymorphic types it will print data declaration as it would seem if all type variables were instantiated. For records it ommits record fields For non-ADT types results will be wrong most likely
conArgsNames :: Data a => a -> [String] #
Get string types of constructor arguments.
constrArgs :: forall witness. Data witness => witness -> Constr -> [TypeRep] #
As conArgs but value is build from given type witness and constuctor
 representation.
constrArgsNames :: forall witness. Data witness => witness -> Constr -> [String] #
As conArgsNames but value is build from given type witness and constuctor
 representation.
Representation of (monomorphic) data type.
Constructors
| DataDecl | |
Fields 
  | |
Instances
| Data DataDecl # | |
Defined in Test.Testable.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DataDecl -> c DataDecl gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DataDecl toConstr :: DataDecl -> Constr dataTypeOf :: DataDecl -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DataDecl) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DataDecl) gmapT :: (forall b. Data b => b -> b) -> DataDecl -> DataDecl gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DataDecl -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DataDecl -> r gmapQ :: (forall d. Data d => d -> u) -> DataDecl -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> DataDecl -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> DataDecl -> m DataDecl gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DataDecl -> m DataDecl gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DataDecl -> m DataDecl  | |
| Read DataDecl # | |
Defined in Test.Testable.Data  | |
| Show DataDecl # | |
| Eq DataDecl # | |
| Ord DataDecl # | |
Defined in Test.Testable.Data  | |
Representatio of data constructor.
Constructors
| DataCon | |
Fields 
  | |
Instances
| Data DataCon # | |
Defined in Test.Testable.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DataCon -> c DataCon gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DataCon dataTypeOf :: DataCon -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DataCon) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DataCon) gmapT :: (forall b. Data b => b -> b) -> DataCon -> DataCon gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DataCon -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DataCon -> r gmapQ :: (forall d. Data d => d -> u) -> DataCon -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> DataCon -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> DataCon -> m DataCon gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DataCon -> m DataCon gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DataCon -> m DataCon  | |
| Read DataCon # | |
Defined in Test.Testable.Data  | |
| Show DataCon # | |
| Eq DataCon # | |
| Ord DataCon # | |
canonizeData :: DataDecl -> DataDecl #
Get canonical representation of data type, that is such that data constructor order is sorted.
deepCanonizeData :: DataDecl -> DataDecl #
Canonize also data field order, in addition to data constructor
 order (as done by canonizeData).