@@ -21,7 +21,7 @@
22-----------------------------------------------------------------------------
22-----------------------------------------------------------------------------
23module Data.Generics.Internal.HList
23module Data.Generics.Internal.HList
24− ( (++)
24+ ( type (++)
26 , ListTuple (..)
26 , ListTuple (..)
@@ -152,6 +152,55 @@ instance ListTuple (a, b, c, d, e, f, g, h, j, k, l) '[a, b, c, d, e, f, g, h, j
152 listToTuple (a :> b :> c :> d :> e :> f :> g :> h :> j :> k :> l :> Nil)
152 listToTuple (a :> b :> c :> d :> e :> f :> g :> h :> j :> k :> l :> Nil)
153 = (a, b, c, d, e, f, g, h, j, k, l)
153 = (a, b, c, d, e, f, g, h, j, k, l)
155+instance 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] where
156+ type ListToTuple '[a, b, c, d, e, f, g, h, j, k, l, m] = (a, b, c, d, e, f, g, h, j, k, l, m)
157+ tupleToList (a, b, c, d, e, f, g, h, j, k, l, m)
158+ = a :> b :> c :> d:> e :> f :> g :> h :> j :> k :> l :> m :> Nil
159+ listToTuple (a :> b :> c :> d :> e :> f :> g :> h :> j :> k :> l :> m :> Nil)
160+ = (a, b, c, d, e, f, g, h, j, k, l, m)
162+instance 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] where
163+ type ListToTuple '[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)
164+ tupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n)
165+ = a :> b :> c :> d:> e :> f :> g :> h :> j :> k :> l :> m :> n :> Nil
166+ listToTuple (a :> b :> c :> d :> e :> f :> g :> h :> j :> k :> l :> m :> n :> Nil)
167+ = (a, b, c, d, e, f, g, h, j, k, l, m, n)
169+instance 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] where
170+ type ListToTuple '[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)
171+ tupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o)
172+ = a :> b :> c :> d:> e :> f :> g :> h :> j :> k :> l :> m :> n :> o :> Nil
173+ listToTuple (a :> b :> c :> d :> e :> f :> g :> h :> j :> k :> l :> m :> n :> o :> Nil)
174+ = (a, b, c, d, e, f, g, h, j, k, l, m, n, o)
176+instance 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] where
177+ type ListToTuple '[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)
178+ tupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p)
179+ = a :> b :> c :> d:> e :> f :> g :> h :> j :> k :> l :> m :> n :> o :> p :> Nil
180+ listToTuple (a :> b :> c :> d :> e :> f :> g :> h :> j :> k :> l :> m :> n :> o :> p :> Nil)
181+ = (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p)
183+instance 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] where
184+ type ListToTuple '[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)
185+ tupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q)
186+ = a :> b :> c :> d:> e :> f :> g :> h :> j :> k :> l :> m :> n :> o :> p :> q :> Nil
187+ listToTuple (a :> b :> c :> d :> e :> f :> g :> h :> j :> k :> l :> m :> n :> o :> p :> q :> Nil)
188+ = (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q)
190+instance 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] where
191+ type ListToTuple '[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)
192+ tupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r)
193+ = a :> b :> c :> d:> e :> f :> g :> h :> j :> k :> l :> m :> n :> o :> p :> q :> r :> Nil
194+ listToTuple (a :> b :> c :> d :> e :> f :> g :> h :> j :> k :> l :> m :> n :> o :> p :> q :> r :> Nil)
195+ = (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r)
197+instance 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] where
198+ type ListToTuple '[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)
199+ tupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s)
200+ = a :> b :> c :> d:> e :> f :> g :> h :> j :> k :> l :> m :> n :> o :> p :> q :> r :> s :> Nil
201+ listToTuple (a :> b :> c :> d :> e :> f :> g :> h :> j :> k :> l :> m :> n :> o :> p :> q :> r :> s :> Nil)
202+ = (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s)
155--------------------------------------------------------------------------------
204--------------------------------------------------------------------------------
157class GCollectible (f :: Type -> Type) (as :: [Type]) | f -> as where
206class GCollectible (f :: Type -> Type) (as :: [Type]) | f -> as where