| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Serialize.Describe.Class
Synopsis
- class Describe a where
- type Context (m :: (* -> *) -> * -> *) a :: Constraint
- describe :: (MonadTrans m, forall x. Monad x => Monad (m x), Context m a) => DescriptorM m a a
- describeVia :: Name -> Name -> Q [Dec]
- field :: forall a m s. (Describe a, MonadTrans m, forall x. Monad x => Monad (m x), Context m a) => (s -> a) -> DescriptorM m s a
- isoField :: (Describe b, MonadTrans m, forall x. Monad x => Monad (m x), Context m b) => Iso' a b -> (s -> a) -> DescriptorM m s a
Documentation
class Describe a where Source #
Minimal complete definition
Nothing
Associated Types
type Context (m :: (* -> *) -> * -> *) a :: Constraint Source #
Methods
describe :: (MonadTrans m, forall x. Monad x => Monad (m x), Context m a) => DescriptorM m a a Source #
describe :: (Generic a, GDescribe (Rep a), MonadTrans m, forall x. Monad x => Monad (m x)) => DescriptorM m a a Source #
Instances
Arguments
| :: Name | The type wrapper to inherit |
| -> Name | |
| -> Q [Dec] |
An alternative to DerivingVia, as the type variable a of Describe is bound to the type family Context making its role nominal, and subsequently, uncoercible as per the semantics of DerivingVia. A restriction exists, however: both of the types specified must be Coercible.
field :: forall a m s. (Describe a, MonadTrans m, forall x. Monad x => Monad (m x), Context m a) => (s -> a) -> DescriptorM m s a Source #
A descriptor from structure to field.
isoField :: (Describe b, MonadTrans m, forall x. Monad x => Monad (m x), Context m b) => Iso' a b -> (s -> a) -> DescriptorM m s a Source #
Similar to field, but applied to an isomorphism.