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
).