Copyright | (C) 2018 Csongor Kiss |
---|---|
License | BSD3 |
Maintainer | Csongor Kiss <kiss.csongor.kiss@gmail.com> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
The library internals are exposed through this module. Please keep in mind that everything here is subject to change irrespective of the the version numbers.
Synopsis
- type Indexed t = Indexed' t 0
- type family Infer (s :: *) (a' :: *) (b :: *) :: * where ...
- data PTag = PTag
- type family P :: Nat -> k -> PTag -> k
- type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where ...
- type family ArgAt (t :: k) (n :: Nat) :: j where ...
- type family ArgCount (t :: k) :: Nat where ...
- class UnifyHead (a :: k) (b :: k)
- type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ...
- type family HasTotalTypeP (typ :: Type) f :: Maybe Type where ...
- type family HasTotalPositionP (pos :: Nat) f :: Maybe Type where ...
- data Pos (p :: Nat)
- type family HasPartialTypeP a f :: Bool where ...
- type family HasCtorP (ctor :: Symbol) f :: Bool where ...
- type family GTypes (rep :: Type -> Type) :: [Type] where ...
- type family CollectTotalType t f :: TypeStat where ...
- type family CollectPartialType t f :: [Symbol] where ...
- type family CollectField t f :: TypeStat where ...
- type family CollectFieldsOrdered (r :: * -> *) :: [Symbol] where ...
- data TypeStat = TypeStat {
- _containsNone :: [Symbol]
- _containsMultiple :: [Symbol]
- _containsOne :: [Symbol]
- type family (xs :: [Symbol]) \\ (ys :: [Symbol]) :: [Symbol] where ...
- type family ShowSymbols (ctors :: [Symbol]) :: ErrorMessage where ...
- type Indexed t = Indexed' t 0
- type family Infer (s :: *) (a' :: *) (b :: *) :: * where ...
- data PTag = PTag
- type family P :: Nat -> k -> PTag -> k
- type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where ...
- type family ArgAt (t :: k) (n :: Nat) :: j where ...
- type family ArgCount (t :: k) :: Nat where ...
- class UnifyHead (a :: k) (b :: k)
- type family CollectTotalType t f :: TypeStat where ...
- type family CollectPartialType t f :: [Symbol] where ...
- type family CollectField t f :: TypeStat where ...
- type family CollectFieldsOrdered (r :: * -> *) :: [Symbol] where ...
- data TypeStat = TypeStat {
- _containsNone :: [Symbol]
- _containsMultiple :: [Symbol]
- _containsOne :: [Symbol]
- type family (xs :: [Symbol]) \\ (ys :: [Symbol]) :: [Symbol] where ...
- type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ...
- type family HasTotalTypeP (typ :: Type) f :: Maybe Type where ...
- type family HasTotalPositionP (pos :: Nat) f :: Maybe Type where ...
- data Pos (p :: Nat)
- type family HasPartialTypeP a f :: Bool where ...
- type family HasCtorP (ctor :: Symbol) f :: Bool where ...
- type family GTypes (rep :: Type -> Type) :: [Type] where ...
- data Void
- data Void1 a
- data Void2 a b
- class GAsConstructor (ctor :: Symbol) s t a b | ctor s -> a, ctor t -> b where
- type GAsConstructor' ctor s a = GAsConstructor ctor s s a a
- class GAsType (f :: Type -> Type) (as :: [Type]) where
- class GAsSubtype (subf :: Type -> Type) (supf :: Type -> Type) where
- type (<?) x y = Not (y <=? x)
- type family Size f :: Nat where ...
- type family CRep (a :: Type) :: G where ...
- class GLens (pred :: Pred) (s :: Type -> Type) (t :: Type -> Type) a b | s pred -> a, t pred -> b where
- type GLens' pred s a = GLens pred s s a a
- type TyFun a b = a -> b -> Type
- type family Eval (f :: TyFun a b) (x :: a) :: b
- class GUpcast (sub :: Type -> Type) (sup :: Type -> Type) where
- gupcast :: sub p -> sup p
- class GSmash sub sup where
- gsmash :: sup p -> sub p -> sub p
- class GHasConstraints (c :: * -> * -> Constraint) s t where
- gconstraints :: TraversalC c (s x) (t x)
- class GHasConstraints' (c :: * -> Constraint) (f :: * -> *) where
- gconstraints' :: forall g x. Applicative g => (forall a. c a => a -> g a) -> f x -> g (f x)
- class GIsList (f :: Type -> Type) (g :: Type -> Type) (as :: [Type]) (bs :: [Type]) | f -> as, g -> bs, bs f -> g, as g -> f where
- class IndexList (i :: Nat) as bs a b | i as -> a, i bs -> b, i as b -> bs, i bs a -> as where
- data HList (as :: [Type]) where
- type family (as :: [k]) ++ (bs :: [k]) :: [k] where ...
- class Elem (as :: [(k, Type)]) (key :: k) (i :: Nat) a | as key -> i a
- class ListTuple (tuple :: Type) (as :: [Type]) | as -> tuple where
- type ListToTuple as :: Type
- tupled :: Iso' (HList as) tuple
- tupleToList :: tuple -> HList as
- listToTuple :: HList as -> tuple
- type family TupleToList a where ...
Documentation
type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where ... Source #
LookupParam (param (n :: Nat)) m = Nothing | |
LookupParam (a (_ (m :: Nat))) n = IfEq m n (Just 0) (MaybeAdd (LookupParam a n) 1) | |
LookupParam (a _) n = MaybeAdd (LookupParam a n) 1 | |
LookupParam a _ = Nothing |
class UnifyHead (a :: k) (b :: k) Source #
Ensure that the types a
and b
are both applications of the same
constructor. The arguments may be different.
Instances
a ~ b => UnifyHead (a :: k) (b :: k) Source # | |
Defined in Data.Generics.Internal.Families.Changing | |
(gb ~ g b, UnifyHead f g) => UnifyHead (f a :: k2) (gb :: k2) Source # | |
Defined in Data.Generics.Internal.Families.Changing |
type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ... Source #
HasTotalFieldP field (S1 (MetaSel (Just field) _ _ _) (Rec0 t)) = Just t | |
HasTotalFieldP field (l :*: r) = Alt (HasTotalFieldP field l) (HasTotalFieldP field r) | |
HasTotalFieldP field (l :+: r) = Both (HasTotalFieldP field l) (HasTotalFieldP field r) | |
HasTotalFieldP field (S1 _ _) = Nothing | |
HasTotalFieldP field (C1 _ f) = HasTotalFieldP field f | |
HasTotalFieldP field (D1 _ f) = HasTotalFieldP field f | |
HasTotalFieldP field (K1 _ _) = Nothing | |
HasTotalFieldP field U1 = Nothing | |
HasTotalFieldP field V1 = Nothing |
type family HasTotalTypeP (typ :: Type) f :: Maybe Type where ... Source #
HasTotalTypeP typ (S1 _ (K1 _ typ)) = Just typ | |
HasTotalTypeP typ (l :*: r) = Alt (HasTotalTypeP typ l) (HasTotalTypeP typ r) | |
HasTotalTypeP typ (l :+: r) = Both (HasTotalTypeP typ l) (HasTotalTypeP typ r) | |
HasTotalTypeP typ (S1 _ _) = Nothing | |
HasTotalTypeP typ (C1 _ f) = HasTotalTypeP typ f | |
HasTotalTypeP typ (D1 _ f) = HasTotalTypeP typ f | |
HasTotalTypeP typ (K1 _ _) = Nothing | |
HasTotalTypeP typ U1 = Nothing | |
HasTotalTypeP typ V1 = Nothing |
type family HasTotalPositionP (pos :: Nat) f :: Maybe Type where ... Source #
HasTotalPositionP pos (S1 _ (K1 (Pos pos) t)) = Just t | |
HasTotalPositionP pos (l :*: r) = Alt (HasTotalPositionP pos l) (HasTotalPositionP pos r) | |
HasTotalPositionP pos (l :+: r) = Both (HasTotalPositionP pos l) (HasTotalPositionP pos r) | |
HasTotalPositionP pos (S1 _ _) = Nothing | |
HasTotalPositionP pos (C1 _ f) = HasTotalPositionP pos f | |
HasTotalPositionP pos (D1 _ f) = HasTotalPositionP pos f | |
HasTotalPositionP pos (K1 _ _) = Nothing | |
HasTotalPositionP pos U1 = Nothing | |
HasTotalPositionP pos V1 = Nothing |
type family HasPartialTypeP a f :: Bool where ... Source #
HasPartialTypeP t (l :+: r) = HasPartialTypeP t l || HasPartialTypeP t r | |
HasPartialTypeP t (C1 m f) = t == GTypes f | |
HasPartialTypeP t (M1 _ _ f) = HasPartialTypeP t f | |
HasPartialTypeP t _ = False |
type family CollectTotalType t f :: TypeStat where ... Source #
CollectTotalType t (C1 (MetaCons ctor _ _) f) = AddToStat ctor (CountType t f) EmptyStat | |
CollectTotalType t (M1 _ _ r) = CollectTotalType t r | |
CollectTotalType t (l :+: r) = MergeStat (CollectTotalType t l) (CollectTotalType t r) |
type family CollectPartialType t f :: [Symbol] where ... Source #
CollectPartialType t (l :+: r) = CollectPartialType t l ++ CollectPartialType t r | |
CollectPartialType t (C1 (MetaCons ctor _ _) f) = If (t == GTypes f) '[ctor] '[] | |
CollectPartialType t (D1 _ f) = CollectPartialType t f |
type family CollectField t f :: TypeStat where ... Source #
CollectField t (C1 (MetaCons ctor _ _) f) = AddToStat ctor (CountField t f) EmptyStat | |
CollectField t (M1 _ _ r) = CollectField t r | |
CollectField t (l :+: r) = MergeStat (CollectField t l) (CollectField t r) |
type family CollectFieldsOrdered (r :: * -> *) :: [Symbol] where ... Source #
CollectFieldsOrdered (l :*: r) = Merge (CollectFieldsOrdered l) (CollectFieldsOrdered r) | |
CollectFieldsOrdered (S1 (MetaSel (Just name) _ _ _) _) = '[name] | |
CollectFieldsOrdered (M1 _ m a) = CollectFieldsOrdered a | |
CollectFieldsOrdered _ = '[] |
TypeStat | |
|
type family ShowSymbols (ctors :: [Symbol]) :: ErrorMessage where ... Source #
ShowSymbols '[] = Text "" | |
ShowSymbols (c ': cs) = (Text "\8226 " :<>: Text c) :$$: ShowSymbols cs |
type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where ... Source #
LookupParam (param (n :: Nat)) m = Nothing | |
LookupParam (a (_ (m :: Nat))) n = IfEq m n (Just 0) (MaybeAdd (LookupParam a n) 1) | |
LookupParam (a _) n = MaybeAdd (LookupParam a n) 1 | |
LookupParam a _ = Nothing |
class UnifyHead (a :: k) (b :: k) Source #
Ensure that the types a
and b
are both applications of the same
constructor. The arguments may be different.
Instances
a ~ b => UnifyHead (a :: k) (b :: k) Source # | |
Defined in Data.Generics.Internal.Families.Changing | |
(gb ~ g b, UnifyHead f g) => UnifyHead (f a :: k2) (gb :: k2) Source # | |
Defined in Data.Generics.Internal.Families.Changing |
type family CollectTotalType t f :: TypeStat where ... Source #
CollectTotalType t (C1 (MetaCons ctor _ _) f) = AddToStat ctor (CountType t f) EmptyStat | |
CollectTotalType t (M1 _ _ r) = CollectTotalType t r | |
CollectTotalType t (l :+: r) = MergeStat (CollectTotalType t l) (CollectTotalType t r) |
type family CollectPartialType t f :: [Symbol] where ... Source #
CollectPartialType t (l :+: r) = CollectPartialType t l ++ CollectPartialType t r | |
CollectPartialType t (C1 (MetaCons ctor _ _) f) = If (t == GTypes f) '[ctor] '[] | |
CollectPartialType t (D1 _ f) = CollectPartialType t f |
type family CollectField t f :: TypeStat where ... Source #
CollectField t (C1 (MetaCons ctor _ _) f) = AddToStat ctor (CountField t f) EmptyStat | |
CollectField t (M1 _ _ r) = CollectField t r | |
CollectField t (l :+: r) = MergeStat (CollectField t l) (CollectField t r) |
type family CollectFieldsOrdered (r :: * -> *) :: [Symbol] where ... Source #
CollectFieldsOrdered (l :*: r) = Merge (CollectFieldsOrdered l) (CollectFieldsOrdered r) | |
CollectFieldsOrdered (S1 (MetaSel (Just name) _ _ _) _) = '[name] | |
CollectFieldsOrdered (M1 _ m a) = CollectFieldsOrdered a | |
CollectFieldsOrdered _ = '[] |
TypeStat | |
|
type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ... Source #
HasTotalFieldP field (S1 (MetaSel (Just field) _ _ _) (Rec0 t)) = Just t | |
HasTotalFieldP field (l :*: r) = Alt (HasTotalFieldP field l) (HasTotalFieldP field r) | |
HasTotalFieldP field (l :+: r) = Both (HasTotalFieldP field l) (HasTotalFieldP field r) | |
HasTotalFieldP field (S1 _ _) = Nothing | |
HasTotalFieldP field (C1 _ f) = HasTotalFieldP field f | |
HasTotalFieldP field (D1 _ f) = HasTotalFieldP field f | |
HasTotalFieldP field (K1 _ _) = Nothing | |
HasTotalFieldP field U1 = Nothing | |
HasTotalFieldP field V1 = Nothing |
type family HasTotalTypeP (typ :: Type) f :: Maybe Type where ... Source #
HasTotalTypeP typ (S1 _ (K1 _ typ)) = Just typ | |
HasTotalTypeP typ (l :*: r) = Alt (HasTotalTypeP typ l) (HasTotalTypeP typ r) | |
HasTotalTypeP typ (l :+: r) = Both (HasTotalTypeP typ l) (HasTotalTypeP typ r) | |
HasTotalTypeP typ (S1 _ _) = Nothing | |
HasTotalTypeP typ (C1 _ f) = HasTotalTypeP typ f | |
HasTotalTypeP typ (D1 _ f) = HasTotalTypeP typ f | |
HasTotalTypeP typ (K1 _ _) = Nothing | |
HasTotalTypeP typ U1 = Nothing | |
HasTotalTypeP typ V1 = Nothing |
type family HasTotalPositionP (pos :: Nat) f :: Maybe Type where ... Source #
HasTotalPositionP pos (S1 _ (K1 (Pos pos) t)) = Just t | |
HasTotalPositionP pos (l :*: r) = Alt (HasTotalPositionP pos l) (HasTotalPositionP pos r) | |
HasTotalPositionP pos (l :+: r) = Both (HasTotalPositionP pos l) (HasTotalPositionP pos r) | |
HasTotalPositionP pos (S1 _ _) = Nothing | |
HasTotalPositionP pos (C1 _ f) = HasTotalPositionP pos f | |
HasTotalPositionP pos (D1 _ f) = HasTotalPositionP pos f | |
HasTotalPositionP pos (K1 _ _) = Nothing | |
HasTotalPositionP pos U1 = Nothing | |
HasTotalPositionP pos V1 = Nothing |
type family HasPartialTypeP a f :: Bool where ... Source #
HasPartialTypeP t (l :+: r) = HasPartialTypeP t l || HasPartialTypeP t r | |
HasPartialTypeP t (C1 m f) = t == GTypes f | |
HasPartialTypeP t (M1 _ _ f) = HasPartialTypeP t f | |
HasPartialTypeP t _ = False |
Instances
HasField_ f (Void1 a) (Void1 b) a b Source # | |
HasField f (Void1 a) (Void1 b) a b Source # | |
HasParam p (Void1 a) (Void1 b) a b Source # | |
Defined in Data.Generics.Product.Param | |
HasPosition_ f (Void1 a) (Void1 b) a b Source # | |
HasPosition f (Void1 a) (Void1 b) a b Source # | |
AsConstructor_ ctor (Void1 a) (Void1 b) a b Source # | |
AsConstructor ctor (Void1 a) (Void1 b) a b Source # | |
class GAsConstructor (ctor :: Symbol) s t a b | ctor s -> a, ctor t -> b where Source #
As AsConstructor
but over generic representations as defined by
GHC.Generics.
Instances
GSumAsConstructor ctor (HasCtorP ctor l) l r l' r' a b => GAsConstructor ctor (l :+: r) (l' :+: r') a b Source # | |
GAsConstructor ctor f f' a b => GAsConstructor ctor (M1 D meta f) (M1 D meta f') a b Source # | |
(GIsList f f as as, GIsList g g bs bs, ListTuple a as, ListTuple b bs) => GAsConstructor ctor (M1 C (MetaCons ctor fixity fields) f) (M1 C (MetaCons ctor fixity fields) g) a b Source # | |
type GAsConstructor' ctor s a = GAsConstructor ctor s s a a Source #
class GAsType (f :: Type -> Type) (as :: [Type]) where Source #
As AsType
but over generic representations as defined by GHC.Generics.
class GAsSubtype (subf :: Type -> Type) (supf :: Type -> Type) where Source #
As AsSubtype
but over generic representations as defined by
GHC.Generics.
Instances
(GSplash sub sup, GDowncast sub sup) => GAsSubtype sub sup Source # | |
Defined in Data.Generics.Sum.Internal.Subtype |
type family CRep (a :: Type) :: G where ... Source #
In-order labeling of the generic tree with the field positions
We replace the (K1 R a) nodes with (K1 (Pos n) a), where n
is the position
of the field in question in the data type. This is convenient, because we
can reuse all the existing functions as long as they are polymorphic in the
first parameter of K1
.
class GLens (pred :: Pred) (s :: Type -> Type) (t :: Type -> Type) a b | s pred -> a, t pred -> b where Source #
Instances
GLens pred (K1 r a :: Type -> Type) (K1 r b :: Type -> Type) a b Source # | |
(GLens pred l l' a b, GLens pred r r' a b) => GLens pred (l :+: r) (l' :+: r') a b Source # | |
GProductLens (Eval pred l) pred l r l' r' a b => GLens pred (l :*: r) (l' :*: r') a b Source # | |
GLens pred f g a b => GLens pred (M1 m meta f) (M1 m meta g) a b Source # | |
class GUpcast (sub :: Type -> Type) (sup :: Type -> Type) where Source #
Instances
GUpcast sub sup => GUpcast sub (D1 c sup) Source # | |
Defined in Data.Generics.Product.Internal.Subtype | |
GUpcast sub sup => GUpcast sub (C1 c sup) Source # | |
Defined in Data.Generics.Product.Internal.Subtype | |
GLens' (HasTotalFieldPSym field) sub t => GUpcast sub (S1 (MetaSel (Just field) p f b) (Rec0 t)) Source # | |
(GUpcast sub a, GUpcast sub b) => GUpcast sub (a :*: b) Source # | |
Defined in Data.Generics.Product.Internal.Subtype |
class GSmash sub sup where Source #
Instances
GSmash sub sup => GSmash (D1 c sub :: k -> Type) (sup :: k -> Type) Source # | |
GSmash sub sup => GSmash (C1 c sub :: k -> Type) (sup :: k -> Type) Source # | |
(GSmash a sup, GSmash b sup) => GSmash (a :*: b :: k -> Type) (sup :: k -> Type) Source # | |
(leaf ~ S1 (MetaSel (Just field) p f b) t, GSmashLeaf leaf sup (HasTotalFieldP field sup)) => GSmash (S1 (MetaSel (Just field) p f b) t :: k -> Type) (sup :: k -> Type) Source # | |
class GHasConstraints (c :: * -> * -> Constraint) s t where Source #
gconstraints :: TraversalC c (s x) (t x) Source #
Instances
class GHasConstraints' (c :: * -> Constraint) (f :: * -> *) where Source #
Constrained traversal.
gconstraints' :: forall g x. Applicative g => (forall a. c a => a -> g a) -> f x -> g (f x) Source #
Instances
class GIsList (f :: Type -> Type) (g :: Type -> Type) (as :: [Type]) (bs :: [Type]) | f -> as, g -> bs, bs f -> g, as g -> f where Source #
Instances
GIsList (U1 :: Type -> Type) (U1 :: Type -> Type) ([] :: [Type]) ([] :: [Type]) Source # | |
GIsList (Rec0 a) (Rec0 b) (a ': ([] :: [Type])) (b ': ([] :: [Type])) Source # | |
(GIsList l l' as as', GIsList r r' bs bs', Appending as bs cs as' bs' cs', cs ~ (as ++ bs), cs' ~ (as' ++ bs')) => GIsList (l :*: r) (l' :*: r') cs cs' Source # | |
GIsList f g as bs => GIsList (M1 t meta f) (M1 t meta g) as bs Source # | |
class IndexList (i :: Nat) as bs a b | i as -> a, i bs -> b, i as b -> bs, i bs a -> as where Source #
class ListTuple (tuple :: Type) (as :: [Type]) | as -> tuple where Source #
type ListToTuple as :: Type Source #
tupled :: Iso' (HList as) tuple Source #
tupleToList :: tuple -> HList as Source #
listToTuple :: HList as -> tuple Source #
Instances
ListTuple () ([] :: [Type]) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple [] :: Type Source # | |
ListTuple a (a ': ([] :: [Type])) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': []) :: Type Source # | |
ListTuple (a, b) (a ': (b ': ([] :: [Type]))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': [])) :: Type Source # | |
ListTuple (a, b, c) (a ': (b ': (c ': ([] :: [Type])))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': []))) :: Type Source # | |
ListTuple (a, b, c, d) (a ': (b ': (c ': (d ': ([] :: [Type]))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': [])))) :: Type Source # | |
ListTuple (a, b, c, d, e) (a ': (b ': (c ': (d ': (e ': ([] :: [Type])))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': []))))) :: Type Source # | |
ListTuple (a, b, c, d, e, f) (a ': (b ': (c ': (d ': (e ': (f ': ([] :: [Type]))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': [])))))) :: Type Source # | |
ListTuple (a, b, c, d, e, f, g) (a ': (b ': (c ': (d ': (e ': (f ': (g ': ([] :: [Type])))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': []))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': [])))))))) (a, b, c, d, e, f, g) Source # tupleToList :: (a, b, c, d, e, f, g) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': []))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': []))))))) -> (a, b, c, d, e, f, g) Source # | |
ListTuple (a, b, c, d, e, f, g, h) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': ([] :: [Type]))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': [])))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': []))))))))) (a, b, c, d, e, f, g, h) Source # tupleToList :: (a, b, c, d, e, f, g, h) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': [])))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': [])))))))) -> (a, b, c, d, e, f, g, h) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': ([] :: [Type])))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': []))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': [])))))))))) (a, b, c, d, e, f, g, h, j) Source # tupleToList :: (a, b, c, d, e, f, g, h, j) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': []))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': []))))))))) -> (a, b, c, d, e, f, g, h, j) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': ([] :: [Type]))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': [])))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': []))))))))))) (a, b, c, d, e, f, g, h, j, k) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': [])))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': [])))))))))) -> (a, b, c, d, e, f, g, h, j, k) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': ([] :: [Type])))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': []))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': [])))))))))))) (a, b, c, d, e, f, g, h, j, k, l) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': []))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': []))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': ([] :: [Type]))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': [])))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': []))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': [])))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': [])))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': ([] :: [Type])))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': []))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': [])))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': []))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': []))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n, o) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': ([] :: [Type]))))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': [])))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': []))))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n, o) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n, o) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': [])))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': [])))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n, o) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': ([] :: [Type])))))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': []))))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': [])))))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': []))))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': []))))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': ([] :: [Type]))))))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': [])))))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': []))))))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': [])))))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': [])))))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': ([] :: [Type])))))))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': []))))))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': [])))))))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': []))))))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': []))))))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': ([] :: [Type]))))))))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': [])))))))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': []))))))))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': [])))))))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': [])))))))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s) Source # |
type family TupleToList a where ... Source #
TupleToList () = '[] | |
TupleToList (a, b) = '[a, b] | |
TupleToList (a, b, c) = '[a, b, c] | |
TupleToList (a, b, c, d) = '[a, b, c, d] | |
TupleToList (a, b, c, d, e) = '[a, b, c, d, e] | |
TupleToList (a, b, c, d, e, f) = '[a, b, c, d, e, f] | |
TupleToList (a, b, c, d, e, f, g) = '[a, b, c, d, e, f, g] | |
TupleToList (a, b, c, d, e, f, g, h) = '[a, b, c, d, e, f, g, h] | |
TupleToList (a, b, c, d, e, f, g, h, j) = '[a, b, c, d, e, f, g, h, j] | |
TupleToList (a, b, c, d, e, f, g, h, j, k) = '[a, b, c, d, e, f, g, h, j, k] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l) = '[a, b, c, d, e, f, g, h, j, k, l] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m) = '[a, b, c, d, e, f, g, h, j, k, l, m] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n) = '[a, b, c, d, e, f, g, h, j, k, l, m, n] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o) = '[a, b, c, d, e, f, g, h, j, k, l, m, n, o] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p) = '[a, b, c, d, e, f, g, h, j, k, l, m, n, o, p] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q) = '[a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) = '[a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s) = '[a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s] | |
TupleToList a = '[a] |