describe-0.4.0.5: Combinators for describing binary data structures

Safe HaskellNone
LanguageHaskell2010

Data.Serialize.Describe.Class

Synopsis

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
Describe Bool Source # 
Instance details

Defined in Data.Serialize.Describe.Class

Associated Types

type Context m Bool :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m Bool) => DescriptorM m Bool Bool Source #

Describe Char Source # 
Instance details

Defined in Data.Serialize.Describe.Class

Associated Types

type Context m Char :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m Char) => DescriptorM m Char Char Source #

Describe Int8 Source # 
Instance details

Defined in Data.Serialize.Describe.Class

Associated Types

type Context m Int8 :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m Int8) => DescriptorM m Int8 Int8 Source #

Describe Word8 Source # 
Instance details

Defined in Data.Serialize.Describe.Class

Associated Types

type Context m Word8 :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m Word8) => DescriptorM m Word8 Word8 Source #

Describe () Source # 
Instance details

Defined in Data.Serialize.Describe.Class

Associated Types

type Context m () :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m ()) => DescriptorM m () () Source #

Describe Remaining Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.Remaining

Associated Types

type Context m Remaining :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m Remaining) => DescriptorM m Remaining Remaining Source #

Describe NText Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.NText

Associated Types

type Context m NText :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m NText) => DescriptorM m NText NText Source #

Describe (LE Double) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.LE

Associated Types

type Context m (LE Double) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (LE Double)) => DescriptorM m (LE Double) (LE Double) Source #

Describe (LE Float) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.LE

Associated Types

type Context m (LE Float) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (LE Float)) => DescriptorM m (LE Float) (LE Float) Source #

Describe (LE Int16) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.LE

Associated Types

type Context m (LE Int16) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (LE Int16)) => DescriptorM m (LE Int16) (LE Int16) Source #

Describe (LE Int32) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.LE

Associated Types

type Context m (LE Int32) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (LE Int32)) => DescriptorM m (LE Int32) (LE Int32) Source #

Describe (LE Int64) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.LE

Associated Types

type Context m (LE Int64) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (LE Int64)) => DescriptorM m (LE Int64) (LE Int64) Source #

Describe (LE Word16) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.LE

Associated Types

type Context m (LE Word16) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (LE Word16)) => DescriptorM m (LE Word16) (LE Word16) Source #

Describe (LE Word32) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.LE

Associated Types

type Context m (LE Word32) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (LE Word32)) => DescriptorM m (LE Word32) (LE Word32) Source #

Describe (LE Word64) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.LE

Associated Types

type Context m (LE Word64) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (LE Word64)) => DescriptorM m (LE Word64) (LE Word64) Source #

KnownNat n => Describe (FText n) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.FText

Associated Types

type Context m (FText n) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (FText n)) => DescriptorM m (FText n) (FText n) Source #

Enum e => Describe (ByteEnum e) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.ByteEnum

Associated Types

type Context m (ByteEnum e) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (ByteEnum e)) => DescriptorM m (ByteEnum e) (ByteEnum e) Source #

Describe (BE Double) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.BE

Associated Types

type Context m (BE Double) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (BE Double)) => DescriptorM m (BE Double) (BE Double) Source #

Describe (BE Float) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.BE

Associated Types

type Context m (BE Float) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (BE Float)) => DescriptorM m (BE Float) (BE Float) Source #

Describe (BE Int16) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.BE

Associated Types

type Context m (BE Int16) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (BE Int16)) => DescriptorM m (BE Int16) (BE Int16) Source #

Describe (BE Int32) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.BE

Associated Types

type Context m (BE Int32) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (BE Int32)) => DescriptorM m (BE Int32) (BE Int32) Source #

Describe (BE Int64) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.BE

Associated Types

type Context m (BE Int64) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (BE Int64)) => DescriptorM m (BE Int64) (BE Int64) Source #

Describe (BE Word16) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.BE

Associated Types

type Context m (BE Word16) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (BE Word16)) => DescriptorM m (BE Word16) (BE Word16) Source #

Describe (BE Word32) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.BE

Associated Types

type Context m (BE Word32) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (BE Word32)) => DescriptorM m (BE Word32) (BE Word32) Source #

Describe (BE Word64) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.BE

Associated Types

type Context m (BE Word64) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (BE Word64)) => DescriptorM m (BE Word64) (BE Word64) Source #

(Describe a, Arity n, Vector (Vec n) a, KnownNat n) => Describe (Vec n a) Source # 
Instance details

Defined in Data.Serialize.Describe.Class

Associated Types

type Context m (Vec n a) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (Vec n a)) => DescriptorM m (Vec n a) (Vec n a) Source #

(KnownNat n, Nullable a, Describe a) => Describe (FList n a) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.FList

Associated Types

type Context m (FList n a) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (FList n a)) => DescriptorM m (FList n a) (FList n a) Source #

(Describe a, Predicate a p) => Describe (Optional p a) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.Conditional

Associated Types

type Context m (Optional p a) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (Optional p a)) => DescriptorM m (Optional p a) (Optional p a) Source #

(Describe t, Describe a, Integral t) => Describe (LPList t a) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.LPList

Associated Types

type Context m (LPList t a) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (LPList t a)) => DescriptorM m (LPList t a) (LPList t a) Source #

(KnownNat n, Describe t, Integral t) => Describe (Const n t) Source # 
Instance details

Defined in Data.Serialize.Describe.Combinators.Const

Associated Types

type Context m (Const n t) :: Constraint Source #

Methods

describe :: (MonadTrans m, forall (x :: Type -> Type). Monad x => Monad (m x), Context m (Const n t)) => DescriptorM m (Const n t) (Const n t) Source #

describeVia Source #

Arguments

:: Name

The type wrapper to inherit describe from; must be of type (* -> *)

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