generic-lens-core-2.2.1.0: Generically derive traversals, lenses and prisms.
Copyright (C) 2020 Csongor Kiss
License BSD3
Maintainer Csongor Kiss <kiss.csongor.kiss@gmail.com>
Stability experimental
Portability non-portable
Safe Haskell None
Language Haskell2010

Data.Generics.Product.Internal.HList

Description

Derive an isomorphism between a product type and a flat HList.

Documentation

class GIsList (f :: Type -> Type ) (g :: Type -> Type ) (as :: [ Type ]) (bs :: [ Type ]) | f -> as, g -> bs, bs f -> g, as g -> f where Source #

Methods

glist :: Iso (f x) (g x) ( HList as) ( HList bs) Source #

Instances

Instances details
GIsList ( U1 :: Type -> Type ) ( U1 :: Type -> Type ) ('[] :: [ Type ]) ('[] :: [ Type ]) Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

GIsList ( Rec0 a) ( Rec0 b) '[a] '[b] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

glist :: Iso ( Rec0 a x) ( Rec0 b x) ( HList '[a]) ( HList '[b]) 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 #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

glist :: Iso ((l :*: r) x) ((l' :*: r') x) ( HList cs) ( HList cs') Source #

GIsList f g as bs => GIsList ( M1 t meta f) ( M1 t meta g) as bs Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

glist :: Iso ( M1 t meta f x) ( M1 t meta g x) ( HList as) ( HList 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 #

Instances

Instances details
( IndexList (n - 1) as' bs' a b, as ~ (x ': as'), bs ~ (x ': bs')) => IndexList n as bs a b Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

(as ~ (a ': as'), bs ~ (b ': as')) => IndexList 0 as bs a b Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

type family (as :: [k]) ++ (bs :: [k]) :: [k] where ... Source #

Equations

'[] ++ bs = bs
(a ': as) ++ bs = a ': (as ++ bs)

class Elem (as :: [(k, Type )]) (key :: k) (i :: Nat ) a | as key -> i a Source #

Instances

Instances details
( Elem xs key i a, pos ~ (i + 1)) => Elem (x ': xs :: [(k1, Type )]) (key :: k1) pos (a :: k2) Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

pos ~ 0 => Elem (a ': xs :: [(k, Type )]) (key :: k) pos (a :: (k, Type )) Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

class ListTuple (tuple :: Type ) (tuple' :: Type ) (as :: [ Type ]) (bs :: [ Type ]) | as -> tuple, bs -> tuple' where Source #

Minimal complete definition

tupleToList , listToTuple

Instances

Instances details
ListTuple () () ('[] :: [ Type ]) ('[] :: [ Type ]) Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

ListTuple a a' '[a] '[a'] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

ListTuple (a1, b1) (a2, b2) '[a1, b1] '[a2, b2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1]) ( HList '[a2, b2]) (a1, b1) (a2, b2) Source #

tupleToList :: (a2, b2) -> HList '[a2, b2] Source #

listToTuple :: HList '[a1, b1] -> (a1, b1) Source #

ListTuple (a1, b1, c1) (a2, b2, c2) '[a1, b1, c1] '[a2, b2, c2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1]) ( HList '[a2, b2, c2]) (a1, b1, c1) (a2, b2, c2) Source #

tupleToList :: (a2, b2, c2) -> HList '[a2, b2, c2] Source #

listToTuple :: HList '[a1, b1, c1] -> (a1, b1, c1) Source #

ListTuple (a1, b1, c1, d1) (a2, b2, c2, d2) '[a1, b1, c1, d1] '[a2, b2, c2, d2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1]) ( HList '[a2, b2, c2, d2]) (a1, b1, c1, d1) (a2, b2, c2, d2) Source #

tupleToList :: (a2, b2, c2, d2) -> HList '[a2, b2, c2, d2] Source #

listToTuple :: HList '[a1, b1, c1, d1] -> (a1, b1, c1, d1) Source #

ListTuple (a1, b1, c1, d1, e1) (a2, b2, c2, d2, e2) '[a1, b1, c1, d1, e1] '[a2, b2, c2, d2, e2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1]) ( HList '[a2, b2, c2, d2, e2]) (a1, b1, c1, d1, e1) (a2, b2, c2, d2, e2) Source #

tupleToList :: (a2, b2, c2, d2, e2) -> HList '[a2, b2, c2, d2, e2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1] -> (a1, b1, c1, d1, e1) Source #

ListTuple (a1, b1, c1, d1, e1, f1) (a2, b2, c2, d2, e2, f2) '[a1, b1, c1, d1, e1, f1] '[a2, b2, c2, d2, e2, f2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1]) ( HList '[a2, b2, c2, d2, e2, f2]) (a1, b1, c1, d1, e1, f1) (a2, b2, c2, d2, e2, f2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2) -> HList '[a2, b2, c2, d2, e2, f2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1] -> (a1, b1, c1, d1, e1, f1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1) (a2, b2, c2, d2, e2, f2, g2) '[a1, b1, c1, d1, e1, f1, g1] '[a2, b2, c2, d2, e2, f2, g2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1]) ( HList '[a2, b2, c2, d2, e2, f2, g2]) (a1, b1, c1, d1, e1, f1, g1) (a2, b2, c2, d2, e2, f2, g2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2) -> HList '[a2, b2, c2, d2, e2, f2, g2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1] -> (a1, b1, c1, d1, e1, f1, g1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1) (a2, b2, c2, d2, e2, f2, g2, h2) '[a1, b1, c1, d1, e1, f1, g1, h1] '[a2, b2, c2, d2, e2, f2, g2, h2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2]) (a1, b1, c1, d1, e1, f1, g1, h1) (a2, b2, c2, d2, e2, f2, g2, h2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1] -> (a1, b1, c1, d1, e1, f1, g1, h1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1, j1) (a2, b2, c2, d2, e2, f2, g2, h2, j2) '[a1, b1, c1, d1, e1, f1, g1, h1, j1] '[a2, b2, c2, d2, e2, f2, g2, h2, j2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2]) (a1, b1, c1, d1, e1, f1, g1, h1, j1) (a2, b2, c2, d2, e2, f2, g2, h2, j2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2, j2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1] -> (a1, b1, c1, d1, e1, f1, g1, h1, j1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2) '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1] '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2]) (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1] -> (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2) '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1] '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2]) (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1] -> (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2) '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1] '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2]) (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1] -> (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2) '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1] '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2]) (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1] -> (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2) '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1] '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2]) (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1] -> (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2) '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1] '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2]) (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1] -> (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2) '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1] '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2]) (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1] -> (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2) '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1] '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2]) (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1] -> (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1) Source #

ListTuple (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1, s1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2, s2) '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1, s1] '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2, s2] Source #
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

tupled :: Iso ( HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1, s1]) ( HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2, s2]) (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1, s1) (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2, s2) Source #

tupleToList :: (a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2, s2) -> HList '[a2, b2, c2, d2, e2, f2, g2, h2, j2, k2, l2, m2, n2, o2, p2, q2, r2, s2] Source #

listToTuple :: HList '[a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1, s1] -> (a1, b1, c1, d1, e1, f1, g1, h1, j1, k1, l1, m1, n1, o1, p1, q1, r1, s1) Source #

type family TupleToList a where ... Source #

Equations

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]