binrep-0.3.0: Encode precise binary representations directly in types
Safe HaskellSafe-Inferred
LanguageHaskell2010

Binrep.Generic.BLen

Documentation

blenGeneric :: (Generic a, GBLen (Rep a), BLen w) => Cfg w -> a -> BLenT Source #

class GBLen f where Source #

Methods

gblen :: BLen w => Cfg w -> f p -> BLenT Source #

Instances

Instances details
GBLen (U1 :: k -> Type) Source #

Empty constructor.

Instance details

Defined in Binrep.Generic.BLen

Methods

gblen :: forall w (p :: k0). BLen w => Cfg w -> U1 p -> BLenT Source #

(TypeError GErrRefuseVoid :: Constraint) => GBLen (V1 :: k -> Type) Source #

Refuse to derive instance for void datatype.

Instance details

Defined in Binrep.Generic.BLen

Methods

gblen :: forall w (p :: k0). BLen w => Cfg w -> V1 p -> BLenT Source #

(GBLen l, GBLen r) => GBLen (l :*: r :: k -> Type) Source #

Product type fields are consecutive.

Instance details

Defined in Binrep.Generic.BLen

Methods

gblen :: forall w (p :: k0). BLen w => Cfg w -> (l :*: r) p -> BLenT Source #

GBLenSum (l :+: r) => GBLen (l :+: r :: k -> Type) Source #

Constructor sums are differentiated by a prefix tag.

Instance details

Defined in Binrep.Generic.BLen

Methods

gblen :: forall w (p :: k0). BLen w => Cfg w -> (l :+: r) p -> BLenT Source #

BLen c => GBLen (K1 i c :: k -> Type) Source #

Field.

Instance details

Defined in Binrep.Generic.BLen

Methods

gblen :: forall w (p :: k0). BLen w => Cfg w -> K1 i c p -> BLenT Source #

GBLen f => GBLen (M1 i d f :: k -> Type) Source #

Any datatype, constructor or record.

Instance details

Defined in Binrep.Generic.BLen

Methods

gblen :: forall w (p :: k0). BLen w => Cfg w -> M1 i d f p -> BLenT Source #

class GBLenSum f where Source #

Methods

gblensum :: BLen w => Cfg w -> f p -> BLenT Source #

Instances

Instances details
(GBLenSum l, GBLenSum r) => GBLenSum (l :+: r :: k -> Type) Source # 
Instance details

Defined in Binrep.Generic.BLen

Methods

gblensum :: forall w (p :: k0). BLen w => Cfg w -> (l :+: r) p -> BLenT Source #

(GBLen f, Constructor c) => GBLenSum (C1 c f :: k -> Type) Source # 
Instance details

Defined in Binrep.Generic.BLen

Methods

gblensum :: forall w (p :: k0). BLen w => Cfg w -> C1 c f p -> BLenT Source #