Safe Haskell | None |
---|---|
Language | Haskell2010 |
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 #
Nothing
type Context (m :: (* -> *) -> * -> *) a :: Constraint Source #
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
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.