| Safe Haskell | Safe-Inferred |
|---|---|
| Language | GHC2021 |
Generic.Data.Function.FoldMap.SumConsByte
Description
foldMap for sum types, where constructors are encoded by index
(distance from first/leftmost constructor) in a single byte, which is
prepended to their contents.
TODO. Clumsy and limited. And yet, still handy enough I think.
Synopsis
- class GFoldMapSumConsByte m f where
- gFoldMapSumConsByte :: (Word8 -> m) -> f p -> m
- class GFoldMapCSumCtr m f where
- gFoldMapCSumCtr :: f p -> m
- class GFoldMapCSumCtrArityByte m (arity :: Natural) f where
- gFoldMapCSumCtrArityByte :: (Word8 -> m) -> f p -> m
- type family SumArity (a :: Type -> Type) :: Natural where ...
- type FitsInByte n = FitsInByteResult (n <=? 255)
- type family FitsInByteResult (b :: Bool) :: Constraint where ...
- type family TypeErrorMessage (a :: Symbol) :: Constraint where ...
Documentation
class GFoldMapSumConsByte m f where Source #
Methods
gFoldMapSumConsByte :: (Word8 -> m) -> f p -> m Source #
Instances
| GFoldMapSumConsByte m (V1 :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.SumConsByte Methods gFoldMapSumConsByte :: forall (p :: k0). (Word8 -> m) -> V1 p -> m Source # | |
| (FitsInByte (SumArity (l :+: r)), GFoldMapCSumCtrArityByte m 0 (l :+: r), GFoldMapCSumCtr m (l :+: r), Semigroup m) => GFoldMapSumConsByte m (l :+: r :: Type -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.SumConsByte Methods gFoldMapSumConsByte :: forall (p :: k). (Word8 -> m) -> (l :+: r) p -> m Source # | |
| GFoldMapSumConsByte m (C1 c f :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.SumConsByte Methods gFoldMapSumConsByte :: forall (p :: k0). (Word8 -> m) -> C1 c f p -> m Source # | |
| GFoldMapSumConsByte m f => GFoldMapSumConsByte m (D1 c f :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.SumConsByte Methods gFoldMapSumConsByte :: forall (p :: k0). (Word8 -> m) -> D1 c f p -> m Source # | |
class GFoldMapCSumCtr m f where Source #
Sum type handler handling constructors only. Useful if you handle constructor prefixes elsewhere.
Methods
gFoldMapCSumCtr :: f p -> m Source #
Instances
| (GFoldMapCSumCtr m l, GFoldMapCSumCtr m r) => GFoldMapCSumCtr m (l :+: r :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.SumConsByte Methods gFoldMapCSumCtr :: forall (p :: k0). (l :+: r) p -> m Source # | |
| GFoldMapC m f => GFoldMapCSumCtr m (C1 c f :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.SumConsByte Methods gFoldMapCSumCtr :: forall (p :: k0). C1 c f p -> m Source # | |
class GFoldMapCSumCtrArityByte m (arity :: Natural) f where Source #
Methods
gFoldMapCSumCtrArityByte :: (Word8 -> m) -> f p -> m Source #
Instances
| (GFoldMapCSumCtrArityByte m arity l, GFoldMapCSumCtrArityByte m (arity + SumArity l) r) => GFoldMapCSumCtrArityByte m arity (l :+: r :: Type -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.SumConsByte Methods gFoldMapCSumCtrArityByte :: forall (p :: k). (Word8 -> m) -> (l :+: r) p -> m Source # | |
| KnownNat arity => GFoldMapCSumCtrArityByte m arity (C1 c f :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.SumConsByte Methods gFoldMapCSumCtrArityByte :: forall (p :: k0). (Word8 -> m) -> C1 c f p -> m Source # | |
type FitsInByte n = FitsInByteResult (n <=? 255) Source #
type family FitsInByteResult (b :: Bool) :: Constraint where ... Source #
Equations
| FitsInByteResult 'True = () | |
| FitsInByteResult 'False = TypeErrorMessage "TODO ya type had more than 255 constructors" |
type family TypeErrorMessage (a :: Symbol) :: Constraint where ... Source #
Equations
| TypeErrorMessage a = TypeError ('Text a) |