packages feed

generic-deriving 1.14 → 1.14.1

raw patch · 6 files changed

+1869/−155 lines, 6 filesdep ~template-haskellPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: template-haskell

API changes (from Hackage documentation)

- Generics.Deriving.Enum: instance forall k1 k2 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1). Generics.Deriving.Enum.GEnum (f (g p)) => Generics.Deriving.Enum.GEnum ((GHC.Generics.:.:) f g p)
- Generics.Deriving.Eq: instance forall k1 k2 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1). Generics.Deriving.Eq.GEq (f (g p)) => Generics.Deriving.Eq.GEq ((GHC.Generics.:.:) f g p)
- Generics.Deriving.Instances: instance GHC.Generics.Generic (Control.Arrow.Kleisli m a b)
- Generics.Deriving.Instances: instance GHC.Generics.Generic1 (Control.Arrow.Kleisli m a)
- Generics.Deriving.Instances: type Rep0Kleisli m a b = Rep (Kleisli m a b)
- Generics.Deriving.Instances: type Rep1Kleisli m a = Rep1 (Kleisli m a)
+ Generics.Deriving.Enum: instance forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1). Generics.Deriving.Enum.GEnum (f (g p)) => Generics.Deriving.Enum.GEnum ((GHC.Generics.:.:) f g p)
+ Generics.Deriving.Eq: instance forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1). Generics.Deriving.Eq.GEq (f (g p)) => Generics.Deriving.Eq.GEq ((GHC.Generics.:.:) f g p)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic (a, b, c, d, e, f, g, h)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic (a, b, c, d, e, f, g, h, i)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic (a, b, c, d, e, f, g, h, i, j)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic (a, b, c, d, e, f, g, h, i, j, k)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic (a, b, c, d, e, f, g, h, i, j, k, l)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic (a, b, c, d, e, f, g, h, i, j, k, l, m)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic1 ((,,,,,,,) a b c d e f g)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic1 ((,,,,,,,,) a b c d e f g h)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic1 ((,,,,,,,,,) a b c d e f g h i)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic1 ((,,,,,,,,,,) a b c d e f g h i j)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic1 ((,,,,,,,,,,,) a b c d e f g h i j k)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic1 ((,,,,,,,,,,,,) a b c d e f g h i j k l)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m)
+ Generics.Deriving.Instances: instance GHC.Generics.Generic1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n)
+ Generics.Deriving.Instances: type Rep0Tuple10 a b c d e f g h i j = Rep (a, b, c, d, e, f, g, h, i, j)
+ Generics.Deriving.Instances: type Rep0Tuple11 a b c d e f g h i j k = Rep (a, b, c, d, e, f, g, h, i, j, k)
+ Generics.Deriving.Instances: type Rep0Tuple12 a b c d e f g h i j k l = Rep (a, b, c, d, e, f, g, h, i, j, k, l)
+ Generics.Deriving.Instances: type Rep0Tuple13 a b c d e f g h i j k l m = Rep (a, b, c, d, e, f, g, h, i, j, k, l, m)
+ Generics.Deriving.Instances: type Rep0Tuple14 a b c d e f g h i j k l m n = Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
+ Generics.Deriving.Instances: type Rep0Tuple15 a b c d e f g h i j k l m n o = Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
+ Generics.Deriving.Instances: type Rep0Tuple8 a b c d e f g h = Rep (a, b, c, d, e, f, g, h)
+ Generics.Deriving.Instances: type Rep0Tuple9 a b c d e f g h i = Rep (a, b, c, d, e, f, g, h, i)
+ Generics.Deriving.Instances: type Rep1Tuple10 a b c d e f g h i = Rep1 ((,,,,,,,,,) a b c d e f g h i)
+ Generics.Deriving.Instances: type Rep1Tuple11 a b c d e f g h i j = Rep1 ((,,,,,,,,,,) a b c d e f g h i j)
+ Generics.Deriving.Instances: type Rep1Tuple12 a b c d e f g h i j k = Rep1 ((,,,,,,,,,,,) a b c d e f g h i j k)
+ Generics.Deriving.Instances: type Rep1Tuple13 a b c d e f g h i j k l = Rep1 ((,,,,,,,,,,,,) a b c d e f g h i j k l)
+ Generics.Deriving.Instances: type Rep1Tuple14 a b c d e f g h i j k l m = Rep1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m)
+ Generics.Deriving.Instances: type Rep1Tuple15 a b c d e f g h i j k l m n = Rep1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n)
+ Generics.Deriving.Instances: type Rep1Tuple8 a b c d e f g = Rep1 ((,,,,,,,) a b c d e f g)
+ Generics.Deriving.Instances: type Rep1Tuple9 a b c d e f g h = Rep1 ((,,,,,,,,) a b c d e f g h)

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+# 1.14.1 [2021.08.30]+* Backport the `Generic(1)` instances introduced for tuples (8 through 15) in+  `base-4.16`.+* Make the test suite compile on GHC 9.2 or later.+* Always import `Data.List` qualified to fix the build with recent GHCs.+ # 1.14 [2020.09.30] * Remove instances for `Data.Semigroup.Option`, which is deprecated as of   `base-4.15.0.0`.
README.md view
@@ -3,7 +3,7 @@ [![Hackage Dependencies](https://img.shields.io/hackage-deps/v/generic-deriving.svg)](http://packdeps.haskellers.com/reverse/generic-deriving) [![Haskell Programming Language](https://img.shields.io/badge/language-Haskell-blue.svg)][Haskell.org] [![BSD3 License](http://img.shields.io/badge/license-BSD3-brightgreen.svg)][tl;dr Legal: BSD3]-[![Build](https://img.shields.io/travis/dreixel/generic-deriving.svg)](https://travis-ci.org/dreixel/generic-deriving)+[![Build Status](https://github.com/dreixel/generic-deriving/workflows/Haskell-CI/badge.svg)](https://github.com/dreixel/generic-deriving/actions?query=workflow%3AHaskell-CI)  [Hackage: generic-deriving]:   http://hackage.haskell.org/package/generic-deriving
generic-deriving.cabal view
@@ -1,5 +1,5 @@ name:                   generic-deriving-version:                1.14+version:                1.14.1 synopsis:               Generic programming library for generalised deriving. description: @@ -36,7 +36,7 @@     "Generics.Deriving.Monoid", "Generics.Deriving.Semigroup",     "Generics.Deriving.Show", "Generics.Deriving.Traversable",     and "Generics.Deriving.Uniplate".-    .    +    .     It is worth emphasizing that these modules are primarly intended for     educational purposes. Many of the classes in these modules resemble other     commonly used classes—for example, @GShow@ from "Generics.Deriving.Show"@@ -79,8 +79,10 @@                       , GHC == 8.2.2                       , GHC == 8.4.4                       , GHC == 8.6.5-                      , GHC == 8.8.3-                      , GHC == 8.10.1+                      , GHC == 8.8.4+                      , GHC == 8.10.7+                      , GHC == 9.0.1+                      , GHC == 9.2.* extra-source-files:     CHANGELOG.md                       , README.md @@ -127,7 +129,7 @@    build-depends:        containers       >= 0.1   && < 0.7                       , ghc-prim                     < 1-                      , template-haskell >= 2.4   && < 2.18+                      , template-haskell >= 2.4   && < 2.19                       , th-abstraction   >= 0.4   && < 0.5    default-language:     Haskell2010@@ -144,7 +146,7 @@   build-depends:        base             >= 4.3  && < 5                       , generic-deriving                       , hspec            >= 2    && < 3-                      , template-haskell >= 2.4  && < 2.18+                      , template-haskell >= 2.4  && < 2.19   build-tool-depends:   hspec-discover:hspec-discover   hs-source-dirs:       tests   default-language:     Haskell2010
src/Generics/Deriving/Instances.hs view
@@ -27,144 +27,1842 @@ module Generics.Deriving.Instances ( -- Only instances from Generics.Deriving.Base -- and the Generic1 instances-#if !(MIN_VERSION_base(4,14,0))-    Rep0Kleisli-  , Rep1Kleisli-#endif-#if !(MIN_VERSION_base(4,12,0))-  , Rep0Down-  , Rep1Down-#endif-#if !(MIN_VERSION_base(4,9,0))-  , Rep0ExitCode-  , Rep0Version-  , Rep1ConSum-  , Rep1ConProduct-  , Rep1ConCompose-  , Rep1K1-  , Rep1M1-  , Rep1Par1-  , Rep1Rec1-  , Rep1U1-  , Rep0V1-  , Rep1V1-  , Rep0UAddr-  , Rep1UAddr-  , Rep0UChar-  , Rep1UChar-  , Rep0UDouble-  , Rep1UDouble-  , Rep0UFloat-  , Rep1UFloat-  , Rep0UInt-  , Rep1UInt-  , Rep0UWord-  , Rep1UWord-# if MIN_VERSION_base(4,4,0)-  , Rep0Complex-  , Rep1Complex-# endif-# if MIN_VERSION_base(4,7,0)-  , Rep1Proxy-# endif-#endif-#if !(MIN_VERSION_base(4,7,0))-  , Rep0All-  , Rep0Any-  , Rep0Arity-  , Rep0Associativity-  , Rep0Const-  , Rep1Const-  , Rep0Dual-  , Rep1Dual-  , Rep0Endo-  , Rep0First-  , Rep1First-  , Rep0Fixity-  , Rep0Last-  , Rep1Last-  , Rep0Product-  , Rep1Product-  , Rep0Sum-  , Rep1Sum-  , Rep0WrappedArrow-  , Rep1WrappedArrow-  , Rep0WrappedMonad-  , Rep1WrappedMonad-  , Rep0ZipList-  , Rep1ZipList-  , Rep0U1-  , Rep0Par1-  , Rep0Rec1-  , Rep0K1-  , Rep0M1-  , Rep0ConSum-  , Rep0ConProduct-  , Rep0ConCompose-#endif-#if !(MIN_VERSION_base(4,6,0))-  , Rep1Either-  , Rep1List-  , Rep1Maybe-  , Rep1Tuple2-  , Rep1Tuple3-  , Rep1Tuple4-  , Rep1Tuple5-  , Rep1Tuple6-  , Rep1Tuple7-#endif-#if !(MIN_VERSION_base(4,4,0))-  , Rep0Bool-  , Rep0Char-  , Rep0Double-  , Rep0Either-  , Rep0Int-  , Rep0Float-  , Rep0List-  , Rep0Maybe-  , Rep0Ordering-  , Rep0Tuple2-  , Rep0Tuple3-  , Rep0Tuple4-  , Rep0Tuple5-  , Rep0Tuple6-  , Rep0Tuple7-  , Rep0Unit-#endif-  ) where--#if !(MIN_VERSION_base(4,7,0))-import Control.Applicative-import Data.Monoid-#endif--#if MIN_VERSION_base(4,4,0) && !(MIN_VERSION_base(4,9,0))-import Data.Complex (Complex(..))-#endif--#if MIN_VERSION_base(4,7,0) && !(MIN_VERSION_base(4,9,0))-import Data.Proxy (Proxy(..))-#endif--#if !(MIN_VERSION_base(4,9,0))-import Data.Version (Version(..))-import System.Exit (ExitCode(..))-#endif--#if !(MIN_VERSION_base(4,12,0))-# if MIN_VERSION_base(4,6,0)-import Data.Ord (Down(..))-# else-import GHC.Exts (Down(..))-# endif-#endif--#if !(MIN_VERSION_base(4,14,0))-import Control.Arrow (Kleisli(..))-#endif--#if !(MIN_VERSION_base(4,14,0))-import Generics.Deriving.Base.Internal+#if !(MIN_VERSION_base(4,16,0))+    Rep0Tuple8+  , Rep0Tuple9+  , Rep0Tuple10+  , Rep0Tuple11+  , Rep0Tuple12+  , Rep0Tuple13+  , Rep0Tuple14+  , Rep0Tuple15+  , Rep1Tuple8+  , Rep1Tuple9+  , Rep1Tuple10+  , Rep1Tuple11+  , Rep1Tuple12+  , Rep1Tuple13+  , Rep1Tuple14+  , Rep1Tuple15+#endif+#if !(MIN_VERSION_base(4,14,0))+  , Rep0Kleisli+  , Rep1Kleisli+#endif+#if !(MIN_VERSION_base(4,12,0))+  , Rep0Down+  , Rep1Down+#endif+#if !(MIN_VERSION_base(4,9,0))+  , Rep0ExitCode+  , Rep0Version+  , Rep1ConSum+  , Rep1ConProduct+  , Rep1ConCompose+  , Rep1K1+  , Rep1M1+  , Rep1Par1+  , Rep1Rec1+  , Rep1U1+  , Rep0V1+  , Rep1V1+  , Rep0UAddr+  , Rep1UAddr+  , Rep0UChar+  , Rep1UChar+  , Rep0UDouble+  , Rep1UDouble+  , Rep0UFloat+  , Rep1UFloat+  , Rep0UInt+  , Rep1UInt+  , Rep0UWord+  , Rep1UWord+# if MIN_VERSION_base(4,4,0)+  , Rep0Complex+  , Rep1Complex+# endif+# if MIN_VERSION_base(4,7,0)+  , Rep1Proxy+# endif+#endif+#if !(MIN_VERSION_base(4,7,0))+  , Rep0All+  , Rep0Any+  , Rep0Arity+  , Rep0Associativity+  , Rep0Const+  , Rep1Const+  , Rep0Dual+  , Rep1Dual+  , Rep0Endo+  , Rep0First+  , Rep1First+  , Rep0Fixity+  , Rep0Last+  , Rep1Last+  , Rep0Product+  , Rep1Product+  , Rep0Sum+  , Rep1Sum+  , Rep0WrappedArrow+  , Rep1WrappedArrow+  , Rep0WrappedMonad+  , Rep1WrappedMonad+  , Rep0ZipList+  , Rep1ZipList+  , Rep0U1+  , Rep0Par1+  , Rep0Rec1+  , Rep0K1+  , Rep0M1+  , Rep0ConSum+  , Rep0ConProduct+  , Rep0ConCompose+#endif+#if !(MIN_VERSION_base(4,6,0))+  , Rep1Either+  , Rep1List+  , Rep1Maybe+  , Rep1Tuple2+  , Rep1Tuple3+  , Rep1Tuple4+  , Rep1Tuple5+  , Rep1Tuple6+  , Rep1Tuple7+#endif+#if !(MIN_VERSION_base(4,4,0))+  , Rep0Bool+  , Rep0Char+  , Rep0Double+  , Rep0Either+  , Rep0Int+  , Rep0Float+  , Rep0List+  , Rep0Maybe+  , Rep0Ordering+  , Rep0Tuple2+  , Rep0Tuple3+  , Rep0Tuple4+  , Rep0Tuple5+  , Rep0Tuple6+  , Rep0Tuple7+  , Rep0Unit+#endif+  ) where++#if !(MIN_VERSION_base(4,7,0))+import Control.Applicative+import Data.Monoid+#endif++#if MIN_VERSION_base(4,4,0) && !(MIN_VERSION_base(4,9,0))+import Data.Complex (Complex(..))+#endif++#if MIN_VERSION_base(4,7,0) && !(MIN_VERSION_base(4,9,0))+import Data.Proxy (Proxy(..))+#endif++#if !(MIN_VERSION_base(4,9,0))+import Data.Version (Version(..))+import System.Exit (ExitCode(..))+#endif++#if !(MIN_VERSION_base(4,12,0))+# if MIN_VERSION_base(4,6,0)+import Data.Ord (Down(..))+# else+import GHC.Exts (Down(..))+# endif+#endif++#if !(MIN_VERSION_base(4,14,0))+import Control.Arrow (Kleisli(..))+#endif++#if !(MIN_VERSION_base(4,16,0))+import Generics.Deriving.Base.Internal+#endif++#if !(MIN_VERSION_base(4,16,0))+# if MIN_VERSION_base(4,6,0)+type Rep0Tuple8  a b c d e f g h               = Rep (a, b, c, d, e, f, g, h)+type Rep0Tuple9  a b c d e f g h i             = Rep (a, b, c, d, e, f, g, h, i)+type Rep0Tuple10 a b c d e f g h i j           = Rep (a, b, c, d, e, f, g, h, i, j)+type Rep0Tuple11 a b c d e f g h i j k         = Rep (a, b, c, d, e, f, g, h, i, j, k)+type Rep0Tuple12 a b c d e f g h i j k l       = Rep (a, b, c, d, e, f, g, h, i, j, k, l)+type Rep0Tuple13 a b c d e f g h i j k l m     = Rep (a, b, c, d, e, f, g, h, i, j, k, l, m)+type Rep0Tuple14 a b c d e f g h i j k l m n   = Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n)+type Rep0Tuple15 a b c d e f g h i j k l m n o = Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)+type Rep1Tuple8  a b c d e f g               = Rep1 ((,,,,,,,) a b c d e f g)+type Rep1Tuple9  a b c d e f g h             = Rep1 ((,,,,,,,,) a b c d e f g h)+type Rep1Tuple10 a b c d e f g h i           = Rep1 ((,,,,,,,,,) a b c d e f g h i)+type Rep1Tuple11 a b c d e f g h i j         = Rep1 ((,,,,,,,,,,) a b c d e f g h i j)+type Rep1Tuple12 a b c d e f g h i j k       = Rep1 ((,,,,,,,,,,,) a b c d e f g h i j k)+type Rep1Tuple13 a b c d e f g h i j k l     = Rep1 ((,,,,,,,,,,,,) a b c d e f g h i j k l)+type Rep1Tuple14 a b c d e f g h i j k l m   = Rep1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m)+type Rep1Tuple15 a b c d e f g h i j k l m n = Rep1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n)+deriving instance Generic (a, b, c, d, e, f, g, h)+deriving instance Generic (a, b, c, d, e, f, g, h, i)+deriving instance Generic (a, b, c, d, e, f, g, h, i, j)+deriving instance Generic (a, b, c, d, e, f, g, h, i, j, k)+deriving instance Generic (a, b, c, d, e, f, g, h, i, j, k, l)+deriving instance Generic (a, b, c, d, e, f, g, h, i, j, k, l, m)+deriving instance Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n)+deriving instance Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)+deriving instance Generic1 ((,,,,,,,) a b c d e f g)+deriving instance Generic1 ((,,,,,,,,) a b c d e f g h)+deriving instance Generic1 ((,,,,,,,,,) a b c d e f g h i)+deriving instance Generic1 ((,,,,,,,,,,) a b c d e f g h i j)+deriving instance Generic1 ((,,,,,,,,,,,) a b c d e f g h i j k)+deriving instance Generic1 ((,,,,,,,,,,,,) a b c d e f g h i j k l)+deriving instance Generic1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m)+deriving instance Generic1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n)+# else+type Rep0Tuple8 a b c d e f g h = D1+                                    D1Tuple8+                                    (C1+                                       C1_0Tuple8+                                       (((S1+                                            NoSelector+                                            (Rec0 a)+                                          :*: S1+                                                             NoSelector+                                                             (Rec0+                                                                b))+                                         :*: (S1+                                                             NoSelector+                                                             (Rec0+                                                                c)+                                                           :*: S1+                                                                              NoSelector+                                                                              (Rec0+                                                                                 d)))+                                        :*: ((S1+                                                             NoSelector+                                                             (Rec0+                                                                e)+                                                           :*: S1+                                                                              NoSelector+                                                                              (Rec0+                                                                                 f))+                                                          :*: (S1+                                                                              NoSelector+                                                                              (Rec0+                                                                                 g)+                                                                            :*: S1+                                                                                               NoSelector+                                                                                               (Rec0+                                                                                                  h)))))+type Rep1Tuple8 a b c d e f g = D1+                                  D1Tuple8+                                  (C1+                                     C1_0Tuple8+                                     (((S1+                                          NoSelector+                                          (Rec0 a)+                                        :*: S1+                                                           NoSelector+                                                           (Rec0+                                                              b))+                                       :*: (S1+                                                           NoSelector+                                                           (Rec0+                                                              c)+                                                         :*: S1+                                                                            NoSelector+                                                                            (Rec0+                                                                               d)))+                                      :*: ((S1+                                                           NoSelector+                                                           (Rec0+                                                              e)+                                                         :*: S1+                                                                            NoSelector+                                                                            (Rec0+                                                                               f))+                                                        :*: (S1+                                                                            NoSelector+                                                                            (Rec0+                                                                               g)+                                                                          :*: S1+                                                                                             NoSelector+                                                                                             Par1))))++instance Generic (a, b, c, d, e, f, g, h) where+    type Rep (a, b, c, d, e, f, g, h) = Rep0Tuple8 a b c d e f g h++    from x+      = M1+          (case x of {+             (,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             (M1 (K1 g2)))+                          ((:*:)+                             (M1 (K1 g3))+                             (M1 (K1 g4))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g5))+                             (M1 (K1 g6)))+                          ((:*:)+                             (M1 (K1 g7))+                             (M1 (K1 g8))))) })+    to (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 (K1 g1))+                                                                                       (M1 (K1 g2)))+                                                                   ((:*:) (M1 (K1 g3))+                                                                                       (M1 (K1 g4))))+                                               ((:*:) ((:*:) (M1 (K1 g5))+                                                                                       (M1 (K1 g6)))+                                                                   ((:*:) (M1 (K1 g7))+                                                                                       (M1 (K1 g8))))))+            -> (,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 }++instance Generic1 ((,,,,,,,) a b c d e f g) where+    type Rep1 ((,,,,,,,) a b c d e f g) = Rep1Tuple8 a b c d e f g++    from1 x+      = M1+          (case x of {+             (,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             (M1 (K1 g2)))+                          ((:*:)+                             (M1 (K1 g3))+                             (M1 (K1 g4))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g5))+                             (M1 (K1 g6)))+                          ((:*:)+                             (M1 (K1 g7))+                             (M1 (Par1 g8))))) })+    to1 (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 g1)+                                                                                       (M1 g2))+                                                                   ((:*:) (M1 g3)+                                                                                       (M1 g4)))+                                               ((:*:) ((:*:) (M1 g5)+                                                                                       (M1 g6))+                                                                   ((:*:) (M1 g7)+                                                                                       (M1 g8)))))+            -> (,,,,,,,)+                 (unK1 g1) (unK1 g2)+                 (unK1 g3) (unK1 g4)+                 (unK1 g5) (unK1 g6)+                 (unK1 g7) (unPar1 g8) }++data D1Tuple8+data C1_0Tuple8++instance Datatype D1Tuple8 where+    datatypeName _ = "(,,,,,,,)"+    moduleName _ = "GHC.Tuple"++instance Constructor C1_0Tuple8 where+    conName _ = "(,,,,,,,)"++-----++type Rep0Tuple9 a b c d e f g h i = D1+                                      D1Tuple9+                                      (C1+                                         C1_0Tuple9+                                         (((S1+                                              NoSelector+                                              (Rec0 a)+                                            :*: S1+                                                               NoSelector+                                                               (Rec0+                                                                  b))+                                           :*: (S1+                                                               NoSelector+                                                               (Rec0+                                                                  c)+                                                             :*: S1+                                                                                NoSelector+                                                                                (Rec0+                                                                                   d)))+                                          :*: ((S1+                                                               NoSelector+                                                               (Rec0+                                                                  e)+                                                             :*: S1+                                                                                NoSelector+                                                                                (Rec0+                                                                                   f))+                                                            :*: (S1+                                                                                NoSelector+                                                                                (Rec0+                                                                                   g)+                                                                              :*: (S1+                                                                                                  NoSelector+                                                                                                  (Rec0+                                                                                                     h)+                                                                                                :*: S1+                                                                                                                   NoSelector+                                                                                                                   (Rec0+                                                                                                                      i))))))+type Rep1Tuple9 a b c d e f g h = D1+                                    D1Tuple9+                                    (C1+                                       C1_0Tuple9+                                       (((S1+                                            NoSelector (Rec0 a)+                                          :*: S1+                                                             NoSelector+                                                             (Rec0 b))+                                         :*: (S1+                                                             NoSelector+                                                             (Rec0 c)+                                                           :*: S1+                                                                              NoSelector+                                                                              (Rec0+                                                                                 d)))+                                        :*: ((S1+                                                             NoSelector+                                                             (Rec0 e)+                                                           :*: S1+                                                                              NoSelector+                                                                              (Rec0+                                                                                 f))+                                                          :*: (S1+                                                                              NoSelector+                                                                              (Rec0+                                                                                 g)+                                                                            :*: (S1+                                                                                                NoSelector+                                                                                                (Rec0+                                                                                                   h)+                                                                                              :*: S1+                                                                                                                 NoSelector+                                                                                                                 Par1)))))++instance Generic (a, b, c, d, e, f, g, h, i) where+    type Rep (a, b, c, d, e, f, g, h, i) = Rep0Tuple9 a b c d e f g h i++    from x+      = M1+          (case x of {+             (,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             (M1 (K1 g2)))+                          ((:*:)+                             (M1 (K1 g3))+                             (M1 (K1 g4))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g5))+                             (M1 (K1 g6)))+                          ((:*:)+                             (M1 (K1 g7))+                             ((:*:)+                                (M1 (K1 g8))+                                (M1 (K1 g9)))))) })+    to (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 (K1 g1))+                                                                                       (M1 (K1 g2)))+                                                                   ((:*:) (M1 (K1 g3))+                                                                                       (M1 (K1 g4))))+                                               ((:*:) ((:*:) (M1 (K1 g5))+                                                                                       (M1 (K1 g6)))+                                                                   ((:*:) (M1 (K1 g7))+                                                                                       ((:*:) (M1 (K1 g8))+                                                                                                           (M1 (K1 g9)))))))+            -> (,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 }++instance Generic1 ((,,,,,,,,) a b c d e f g h) where+    type Rep1 ((,,,,,,,,) a b c d e f g h) = Rep1Tuple9 a b c d e f g h++    from1 x+      = M1+          (case x of {+             (,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             (M1 (K1 g2)))+                          ((:*:)+                             (M1 (K1 g3))+                             (M1 (K1 g4))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g5))+                             (M1 (K1 g6)))+                          ((:*:)+                             (M1 (K1 g7))+                             ((:*:)+                                (M1 (K1 g8))+                                (M1 (Par1 g9)))))) })+    to1 (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 g1)+                                                                                       (M1 g2))+                                                                   ((:*:) (M1 g3)+                                                                                       (M1 g4)))+                                               ((:*:) ((:*:) (M1 g5)+                                                                                       (M1 g6))+                                                                   ((:*:) (M1 g7)+                                                                                       ((:*:) (M1 g8)+                                                                                                           (M1 g9))))))+            -> (,,,,,,,,)+                 (unK1 g1) (unK1 g2)+                 (unK1 g3) (unK1 g4)+                 (unK1 g5) (unK1 g6)+                 (unK1 g7) (unK1 g8)+                 (unPar1 g9) }++data D1Tuple9+data C1_0Tuple9++instance Datatype D1Tuple9 where+    datatypeName _ = "(,,,,,,,,)"+    moduleName _ = "GHC.Tuple"++instance Constructor C1_0Tuple9 where+    conName _ = "(,,,,,,,,)"++-----++type Rep0Tuple10 a b c d e f g h i j = D1+                                         D1Tuple10+                                         (C1+                                            C1_0Tuple10+                                            (((S1+                                                 NoSelector (Rec0 a)+                                               :*: S1+                                                                  NoSelector+                                                                  (Rec0 b))+                                              :*: (S1+                                                                  NoSelector+                                                                  (Rec0 c)+                                                                :*: (S1+                                                                                    NoSelector+                                                                                    (Rec0+                                                                                       d)+                                                                                  :*: S1+                                                                                                     NoSelector+                                                                                                     (Rec0+                                                                                                        e))))+                                             :*: ((S1+                                                                  NoSelector+                                                                  (Rec0 f)+                                                                :*: S1+                                                                                   NoSelector+                                                                                   (Rec0+                                                                                      g))+                                                               :*: (S1+                                                                                   NoSelector+                                                                                   (Rec0+                                                                                      h)+                                                                                 :*: (S1+                                                                                                     NoSelector+                                                                                                     (Rec0+                                                                                                        i)+                                                                                                   :*: S1+                                                                                                                      NoSelector+                                                                                                                      (Rec0+                                                                                                                         j))))))+type Rep1Tuple10 a b c d e f g h i = D1+                                       D1Tuple10+                                       (C1+                                          C1_0Tuple10+                                          (((S1+                                               NoSelector (Rec0 a)+                                             :*: S1+                                                                NoSelector+                                                                (Rec0 b))+                                            :*: (S1+                                                                NoSelector+                                                                (Rec0 c)+                                                              :*: (S1+                                                                                  NoSelector+                                                                                  (Rec0+                                                                                     d)+                                                                                :*: S1+                                                                                                   NoSelector+                                                                                                   (Rec0+                                                                                                      e))))+                                           :*: ((S1+                                                                NoSelector+                                                                (Rec0 f)+                                                              :*: S1+                                                                                 NoSelector+                                                                                 (Rec0+                                                                                    g))+                                                             :*: (S1+                                                                                 NoSelector+                                                                                 (Rec0+                                                                                    h)+                                                                               :*: (S1+                                                                                                   NoSelector+                                                                                                   (Rec0+                                                                                                      i)+                                                                                                 :*: S1+                                                                                                                    NoSelector+                                                                                                                    Par1)))))++instance Generic (a, b, c, d, e, f, g, h, i, j) where+    type Rep (a, b, c, d, e, f, g, h, i, j) = Rep0Tuple10 a b c d e f g h i j++    from x+      = M1+          (case x of {+             (,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             (M1 (K1 g2)))+                          ((:*:)+                             (M1 (K1 g3))+                             ((:*:)+                                (M1 (K1 g4))+                                (M1 (K1 g5)))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g6))+                             (M1 (K1 g7)))+                          ((:*:)+                             (M1 (K1 g8))+                             ((:*:)+                                (M1 (K1 g9))+                                (M1 (K1 g10)))))) })+    to (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 (K1 g1))+                                                                                       (M1 (K1 g2)))+                                                                   ((:*:) (M1 (K1 g3))+                                                                                       ((:*:) (M1 (K1 g4))+                                                                                                           (M1 (K1 g5)))))+                                               ((:*:) ((:*:) (M1 (K1 g6))+                                                                                       (M1 (K1 g7)))+                                                                   ((:*:) (M1 (K1 g8))+                                                                                       ((:*:) (M1 (K1 g9))+                                                                                                           (M1 (K1 g10)))))))+            -> (,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 }++instance Generic1+             ((,,,,,,,,,) a b c d e f g h i) where+    type Rep1 ((,,,,,,,,,) a b c d e f g h i) = Rep1Tuple10 a b c d e f g h i++    from1 x+      = M1+          (case x of {+             (,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             (M1 (K1 g2)))+                          ((:*:)+                             (M1 (K1 g3))+                             ((:*:)+                                (M1 (K1 g4))+                                (M1 (K1 g5)))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g6))+                             (M1 (K1 g7)))+                          ((:*:)+                             (M1 (K1 g8))+                             ((:*:)+                                (M1 (K1 g9))+                                (M1 (Par1 g10)))))) })+    to1 (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 g1)+                                                                                       (M1 g2))+                                                                   ((:*:) (M1 g3)+                                                                                       ((:*:) (M1 g4)+                                                                                                           (M1 g5))))+                                               ((:*:) ((:*:) (M1 g6)+                                                                                       (M1 g7))+                                                                   ((:*:) (M1 g8)+                                                                                       ((:*:) (M1 g9)+                                                                                                           (M1 g10))))))+            -> (,,,,,,,,,)+                 (unK1 g1) (unK1 g2)+                 (unK1 g3) (unK1 g4)+                 (unK1 g5) (unK1 g6)+                 (unK1 g7) (unK1 g8)+                 (unK1 g9) (unPar1 g10) }++data D1Tuple10+data C1_0Tuple10++instance Datatype D1Tuple10 where+    datatypeName _ = "(,,,,,,,,,)"+    moduleName _ = "GHC.Tuple"++instance Constructor C1_0Tuple10 where+    conName _ = "(,,,,,,,,,)"++-----++type Rep0Tuple11 a b c d e f g h i j k = D1+                                           D1Tuple11+                                           (C1+                                              C1_0Tuple11+                                              (((S1+                                                   NoSelector+                                                   (Rec0 a)+                                                 :*: S1+                                                                    NoSelector+                                                                    (Rec0 b))+                                                :*: (S1+                                                                    NoSelector+                                                                    (Rec0 c)+                                                                  :*: (S1+                                                                                      NoSelector+                                                                                      (Rec0+                                                                                         d)+                                                                                    :*: S1+                                                                                                       NoSelector+                                                                                                       (Rec0+                                                                                                          e))))+                                               :*: ((S1+                                                                    NoSelector+                                                                    (Rec0 f)+                                                                  :*: (S1+                                                                                      NoSelector+                                                                                      (Rec0+                                                                                         g)+                                                                                    :*: S1+                                                                                                       NoSelector+                                                                                                       (Rec0+                                                                                                          h)))+                                                                 :*: (S1+                                                                                     NoSelector+                                                                                     (Rec0+                                                                                        i)+                                                                                   :*: (S1+                                                                                                       NoSelector+                                                                                                       (Rec0+                                                                                                          j)+                                                                                                     :*: S1+                                                                                                                        NoSelector+                                                                                                                        (Rec0+                                                                                                                           k))))))+type Rep1Tuple11 a b c d e f g h i j = D1+                                         D1Tuple11+                                         (C1+                                            C1_0Tuple11+                                            (((S1+                                                 NoSelector+                                                 (Rec0 a)+                                               :*: S1+                                                                  NoSelector+                                                                  (Rec0 b))+                                              :*: (S1+                                                                  NoSelector+                                                                  (Rec0 c)+                                                                :*: (S1+                                                                                    NoSelector+                                                                                    (Rec0+                                                                                       d)+                                                                                  :*: S1+                                                                                                     NoSelector+                                                                                                     (Rec0+                                                                                                        e))))+                                             :*: ((S1+                                                                  NoSelector+                                                                  (Rec0 f)+                                                                :*: (S1+                                                                                    NoSelector+                                                                                    (Rec0+                                                                                       g)+                                                                                  :*: S1+                                                                                                     NoSelector+                                                                                                     (Rec0+                                                                                                        h)))+                                                               :*: (S1+                                                                                   NoSelector+                                                                                   (Rec0+                                                                                      i)+                                                                                 :*: (S1+                                                                                                     NoSelector+                                                                                                     (Rec0+                                                                                                        j)+                                                                                                   :*: S1+                                                                                                                      NoSelector+                                                                                                                      Par1)))))++instance Generic+             (a, b, c, d, e, f, g, h, i, j, k) where+    type Rep (a, b, c, d, e, f, g, h, i, j, k) = Rep0Tuple11 a b c d e f g h i j k++    from x+      = M1+          (case x of {+             (,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             (M1 (K1 g2)))+                          ((:*:)+                             (M1 (K1 g3))+                             ((:*:)+                                (M1 (K1 g4))+                                (M1 (K1 g5)))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g6))+                             ((:*:)+                                (M1 (K1 g7))+                                (M1 (K1 g8))))+                          ((:*:)+                             (M1 (K1 g9))+                             ((:*:)+                                (M1 (K1 g10))+                                (M1 (K1 g11)))))) })+    to (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 (K1 g1))+                                                                                       (M1 (K1 g2)))+                                                                   ((:*:) (M1 (K1 g3))+                                                                                       ((:*:) (M1 (K1 g4))+                                                                                                           (M1 (K1 g5)))))+                                               ((:*:) ((:*:) (M1 (K1 g6))+                                                                                       ((:*:) (M1 (K1 g7))+                                                                                                           (M1 (K1 g8))))+                                                                   ((:*:) (M1 (K1 g9))+                                                                                       ((:*:) (M1 (K1 g10))+                                                                                                           (M1 (K1 g11)))))))+            -> (,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 }++instance Generic1+             ((,,,,,,,,,,) a b c d e f g h i j) where+    type Rep1 ((,,,,,,,,,,) a b c d e f g h i j) = Rep1Tuple11 a b c d e f g h i j++    from1 x+      = M1+          (case x of {+             (,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             (M1 (K1 g2)))+                          ((:*:)+                             (M1 (K1 g3))+                             ((:*:)+                                (M1 (K1 g4))+                                (M1 (K1 g5)))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g6))+                             ((:*:)+                                (M1 (K1 g7))+                                (M1 (K1 g8))))+                          ((:*:)+                             (M1 (K1 g9))+                             ((:*:)+                                (M1 (K1 g10))+                                (M1 (Par1 g11)))))) })+    to1 (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 g1)+                                                                                       (M1 g2))+                                                                   ((:*:) (M1 g3)+                                                                                       ((:*:) (M1 g4)+                                                                                                           (M1 g5))))+                                               ((:*:) ((:*:) (M1 g6)+                                                                                       ((:*:) (M1 g7)+                                                                                                           (M1 g8)))+                                                                   ((:*:) (M1 g9)+                                                                                       ((:*:) (M1 g10)+                                                                                                           (M1 g11))))))+            -> (,,,,,,,,,,)+                 (unK1 g1) (unK1 g2)+                 (unK1 g3) (unK1 g4)+                 (unK1 g5) (unK1 g6)+                 (unK1 g7) (unK1 g8)+                 (unK1 g9) (unK1 g10)+                 (unPar1 g11) }++data D1Tuple11+data C1_0Tuple11++instance Datatype D1Tuple11 where+    datatypeName _ = "(,,,,,,,,,,)"+    moduleName _ = "GHC.Tuple"++instance Constructor C1_0Tuple11 where+    conName _ = "(,,,,,,,,,,)"++-----++type Rep0Tuple12 a b c d e f g h i j k l = D1+                                             D1Tuple12+                                             (C1+                                                C1_0Tuple12+                                                (((S1+                                                     NoSelector+                                                     (Rec0 a)+                                                   :*: (S1+                                                                       NoSelector+                                                                       (Rec0 b)+                                                                     :*: S1+                                                                                        NoSelector+                                                                                        (Rec0+                                                                                           c)))+                                                  :*: (S1+                                                                      NoSelector+                                                                      (Rec0 d)+                                                                    :*: (S1+                                                                                        NoSelector+                                                                                        (Rec0+                                                                                           e)+                                                                                      :*: S1+                                                                                                         NoSelector+                                                                                                         (Rec0+                                                                                                            f))))+                                                 :*: ((S1+                                                                      NoSelector+                                                                      (Rec0 g)+                                                                    :*: (S1+                                                                                        NoSelector+                                                                                        (Rec0+                                                                                           h)+                                                                                      :*: S1+                                                                                                         NoSelector+                                                                                                         (Rec0+                                                                                                            i)))+                                                                   :*: (S1+                                                                                       NoSelector+                                                                                       (Rec0+                                                                                          j)+                                                                                     :*: (S1+                                                                                                         NoSelector+                                                                                                         (Rec0+                                                                                                            k)+                                                                                                       :*: S1+                                                                                                                          NoSelector+                                                                                                                          (Rec0+                                                                                                                             l))))))+type Rep1Tuple12 a b c d e f g h i j k = D1+                                           D1Tuple12+                                           (C1+                                              C1_0Tuple12+                                              (((S1+                                                   NoSelector+                                                   (Rec0 a)+                                                 :*: (S1+                                                                     NoSelector+                                                                     (Rec0 b)+                                                                   :*: S1+                                                                                      NoSelector+                                                                                      (Rec0+                                                                                         c)))+                                                :*: (S1+                                                                    NoSelector+                                                                    (Rec0 d)+                                                                  :*: (S1+                                                                                      NoSelector+                                                                                      (Rec0+                                                                                         e)+                                                                                    :*: S1+                                                                                                       NoSelector+                                                                                                       (Rec0+                                                                                                          f))))+                                               :*: ((S1+                                                                    NoSelector+                                                                    (Rec0 g)+                                                                  :*: (S1+                                                                                      NoSelector+                                                                                      (Rec0+                                                                                         h)+                                                                                    :*: S1+                                                                                                       NoSelector+                                                                                                       (Rec0+                                                                                                          i)))+                                                                 :*: (S1+                                                                                     NoSelector+                                                                                     (Rec0+                                                                                        j)+                                                                                   :*: (S1+                                                                                                       NoSelector+                                                                                                       (Rec0+                                                                                                          k)+                                                                                                     :*: S1+                                                                                                                        NoSelector+                                                                                                                        Par1)))))++instance Generic+             (a, b, c, d, e, f, g, h, i, j, k, l) where+    type Rep (a, b, c, d, e, f, g, h, i, j, k, l) = Rep0Tuple12 a b c d e f g h i j k l++    from x+      = M1+          (case x of {+             (,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             ((:*:)+                                (M1 (K1 g2))+                                (M1 (K1 g3))))+                          ((:*:)+                             (M1 (K1 g4))+                             ((:*:)+                                (M1 (K1 g5))+                                (M1 (K1 g6)))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g7))+                             ((:*:)+                                (M1 (K1 g8))+                                (M1 (K1 g9))))+                          ((:*:)+                             (M1 (K1 g10))+                             ((:*:)+                                (M1 (K1 g11))+                                (M1 (K1 g12)))))) })+    to (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 (K1 g1))+                                                                                       ((:*:) (M1 (K1 g2))+                                                                                                           (M1 (K1 g3))))+                                                                   ((:*:) (M1 (K1 g4))+                                                                                       ((:*:) (M1 (K1 g5))+                                                                                                           (M1 (K1 g6)))))+                                               ((:*:) ((:*:) (M1 (K1 g7))+                                                                                       ((:*:) (M1 (K1 g8))+                                                                                                           (M1 (K1 g9))))+                                                                   ((:*:) (M1 (K1 g10))+                                                                                       ((:*:) (M1 (K1 g11))+                                                                                                           (M1 (K1 g12)))))))+            -> (,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12 }++instance Generic1+             ((,,,,,,,,,,,) a b c d e f g h i j k) where+    type Rep1 ((,,,,,,,,,,,) a b c d e f g h i j k) = Rep1Tuple12 a b c d e f g h i j k++    from1 x+      = M1+          (case x of {+             (,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             ((:*:)+                                (M1 (K1 g2))+                                (M1 (K1 g3))))+                          ((:*:)+                             (M1 (K1 g4))+                             ((:*:)+                                (M1 (K1 g5))+                                (M1 (K1 g6)))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g7))+                             ((:*:)+                                (M1 (K1 g8))+                                (M1 (K1 g9))))+                          ((:*:)+                             (M1 (K1 g10))+                             ((:*:)+                                (M1 (K1 g11))+                                (M1 (Par1 g12)))))) })+    to1 (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 g1)+                                                                                       ((:*:) (M1 g2)+                                                                                                           (M1 g3)))+                                                                   ((:*:) (M1 g4)+                                                                                       ((:*:) (M1 g5)+                                                                                                           (M1 g6))))+                                               ((:*:) ((:*:) (M1 g7)+                                                                                       ((:*:) (M1 g8)+                                                                                                           (M1 g9)))+                                                                   ((:*:) (M1 g10)+                                                                                       ((:*:) (M1 g11)+                                                                                                           (M1 g12))))))+            -> (,,,,,,,,,,,)+                 (unK1 g1) (unK1 g2)+                 (unK1 g3) (unK1 g4)+                 (unK1 g5) (unK1 g6)+                 (unK1 g7) (unK1 g8)+                 (unK1 g9) (unK1 g10)+                 (unK1 g11) (unPar1 g12) }++data D1Tuple12+data C1_0Tuple12++instance Datatype D1Tuple12 where+    datatypeName _ = "(,,,,,,,,,,,)"+    moduleName _ = "GHC.Tuple"++instance Constructor C1_0Tuple12 where+    conName _ = "(,,,,,,,,,,,)"++-----++type Rep0Tuple13 a b c d e f g h i j k l m = D1+                                               D1Tuple13+                                               (C1+                                                  C1_0Tuple13+                                                  (((S1+                                                       NoSelector+                                                       (Rec0 a)+                                                     :*: (S1+                                                                         NoSelector+                                                                         (Rec0+                                                                            b)+                                                                       :*: S1+                                                                                          NoSelector+                                                                                          (Rec0+                                                                                             c)))+                                                    :*: (S1+                                                                        NoSelector+                                                                        (Rec0+                                                                           d)+                                                                      :*: (S1+                                                                                          NoSelector+                                                                                          (Rec0+                                                                                             e)+                                                                                        :*: S1+                                                                                                           NoSelector+                                                                                                           (Rec0+                                                                                                              f))))+                                                   :*: ((S1+                                                                        NoSelector+                                                                        (Rec0+                                                                           g)+                                                                      :*: (S1+                                                                                          NoSelector+                                                                                          (Rec0+                                                                                             h)+                                                                                        :*: S1+                                                                                                           NoSelector+                                                                                                           (Rec0+                                                                                                              i)))+                                                                     :*: ((S1+                                                                                          NoSelector+                                                                                          (Rec0+                                                                                             j)+                                                                                        :*: S1+                                                                                                           NoSelector+                                                                                                           (Rec0+                                                                                                              k))+                                                                                       :*: (S1+                                                                                                           NoSelector+                                                                                                           (Rec0+                                                                                                              l)+                                                                                                         :*: S1+                                                                                                                            NoSelector+                                                                                                                            (Rec0+                                                                                                                               m))))))+type Rep1Tuple13 a b c d e f g h i j k l = D1+                                             D1Tuple13+                                             (C1+                                                C1_0Tuple13+                                                (((S1+                                                     NoSelector+                                                     (Rec0 a)+                                                   :*: (S1+                                                                       NoSelector+                                                                       (Rec0+                                                                          b)+                                                                     :*: S1+                                                                                        NoSelector+                                                                                        (Rec0+                                                                                           c)))+                                                  :*: (S1+                                                                      NoSelector+                                                                      (Rec0+                                                                         d)+                                                                    :*: (S1+                                                                                        NoSelector+                                                                                        (Rec0+                                                                                           e)+                                                                                      :*: S1+                                                                                                         NoSelector+                                                                                                         (Rec0+                                                                                                            f))))+                                                 :*: ((S1+                                                                      NoSelector+                                                                      (Rec0+                                                                         g)+                                                                    :*: (S1+                                                                                        NoSelector+                                                                                        (Rec0+                                                                                           h)+                                                                                      :*: S1+                                                                                                         NoSelector+                                                                                                         (Rec0+                                                                                                            i)))+                                                                   :*: ((S1+                                                                                        NoSelector+                                                                                        (Rec0+                                                                                           j)+                                                                                      :*: S1+                                                                                                         NoSelector+                                                                                                         (Rec0+                                                                                                            k))+                                                                                     :*: (S1+                                                                                                         NoSelector+                                                                                                         (Rec0+                                                                                                            l)+                                                                                                       :*: S1+                                                                                                                          NoSelector+                                                                                                                          Par1)))))++data D1Tuple13+data C1_0Tuple13++instance Generic+             (a, b, c, d, e, f, g, h, i, j, k, l, m) where+    type Rep (a, b, c, d, e, f, g, h, i, j, k, l, m) = Rep0Tuple13 a b c d e f g h i j k l m++    from x+      = M1+          (case x of {+             (,,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12 g13+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             ((:*:)+                                (M1 (K1 g2))+                                (M1 (K1 g3))))+                          ((:*:)+                             (M1 (K1 g4))+                             ((:*:)+                                (M1 (K1 g5))+                                (M1 (K1 g6)))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g7))+                             ((:*:)+                                (M1 (K1 g8))+                                (M1 (K1 g9))))+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g10))+                                (M1 (K1 g11)))+                             ((:*:)+                                (M1 (K1 g12))+                                (M1 (K1 g13)))))) })+    to (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 (K1 g1))+                                                                                       ((:*:) (M1 (K1 g2))+                                                                                                           (M1 (K1 g3))))+                                                                   ((:*:) (M1 (K1 g4))+                                                                                       ((:*:) (M1 (K1 g5))+                                                                                                           (M1 (K1 g6)))))+                                               ((:*:) ((:*:) (M1 (K1 g7))+                                                                                       ((:*:) (M1 (K1 g8))+                                                                                                           (M1 (K1 g9))))+                                                                   ((:*:) ((:*:) (M1 (K1 g10))+                                                                                                           (M1 (K1 g11)))+                                                                                       ((:*:) (M1 (K1 g12))+                                                                                                           (M1 (K1 g13)))))))+            -> (,,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12 g13 }++instance Generic1+             ((,,,,,,,,,,,,) a b c d e f g h i j k l) where+    type Rep1 ((,,,,,,,,,,,,) a b c d e f g h i j k l) = Rep1Tuple13 a b c d e f g h i j k l++    from1 x+      = M1+          (case x of {+             (,,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12 g13+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             ((:*:)+                                (M1 (K1 g2))+                                (M1 (K1 g3))))+                          ((:*:)+                             (M1 (K1 g4))+                             ((:*:)+                                (M1 (K1 g5))+                                (M1 (K1 g6)))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g7))+                             ((:*:)+                                (M1 (K1 g8))+                                (M1 (K1 g9))))+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g10))+                                (M1 (K1 g11)))+                             ((:*:)+                                (M1 (K1 g12))+                                (M1 (Par1 g13)))))) })+    to1 (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 g1)+                                                                                       ((:*:) (M1 g2)+                                                                                                           (M1 g3)))+                                                                   ((:*:) (M1 g4)+                                                                                       ((:*:) (M1 g5)+                                                                                                           (M1 g6))))+                                               ((:*:) ((:*:) (M1 g7)+                                                                                       ((:*:) (M1 g8)+                                                                                                           (M1 g9)))+                                                                   ((:*:) ((:*:) (M1 g10)+                                                                                                           (M1 g11))+                                                                                       ((:*:) (M1 g12)+                                                                                                           (M1 g13))))))+            -> (,,,,,,,,,,,,)+                 (unK1 g1) (unK1 g2)+                 (unK1 g3) (unK1 g4)+                 (unK1 g5) (unK1 g6)+                 (unK1 g7) (unK1 g8)+                 (unK1 g9) (unK1 g10)+                 (unK1 g11) (unK1 g12)+                 (unPar1 g13) }++instance Datatype D1Tuple13 where+    datatypeName _ = "(,,,,,,,,,,,,)"+    moduleName _ = "GHC.Tuple"++instance Constructor C1_0Tuple13 where+    conName _ = "(,,,,,,,,,,,,)"++-----++type Rep0Tuple14 a b c d e f g h i j k l m n = D1+                                                 D1Tuple14+                                                 (C1+                                                    C1_0Tuple14+                                                    (((S1+                                                         NoSelector+                                                         (Rec0 a)+                                                       :*: (S1+                                                                           NoSelector+                                                                           (Rec0+                                                                              b)+                                                                         :*: S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               c)))+                                                      :*: ((S1+                                                                           NoSelector+                                                                           (Rec0+                                                                              d)+                                                                         :*: S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               e))+                                                                        :*: (S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               f)+                                                                                          :*: S1+                                                                                                             NoSelector+                                                                                                             (Rec0+                                                                                                                g))))+                                                     :*: ((S1+                                                                          NoSelector+                                                                          (Rec0+                                                                             h)+                                                                        :*: (S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               i)+                                                                                          :*: S1+                                                                                                             NoSelector+                                                                                                             (Rec0+                                                                                                                j)))+                                                                       :*: ((S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               k)+                                                                                          :*: S1+                                                                                                             NoSelector+                                                                                                             (Rec0+                                                                                                                l))+                                                                                         :*: (S1+                                                                                                             NoSelector+                                                                                                             (Rec0+                                                                                                                m)+                                                                                                           :*: S1+                                                                                                                              NoSelector+                                                                                                                              (Rec0+                                                                                                                                 n))))))+type Rep1Tuple14 a b c d e f g h i j k l m = D1+                                               D1Tuple14+                                               (C1+                                                  C1_0Tuple14+                                                  (((S1+                                                       NoSelector+                                                       (Rec0 a)+                                                     :*: (S1+                                                                         NoSelector+                                                                         (Rec0+                                                                            b)+                                                                       :*: S1+                                                                                          NoSelector+                                                                                          (Rec0+                                                                                             c)))+                                                    :*: ((S1+                                                                         NoSelector+                                                                         (Rec0+                                                                            d)+                                                                       :*: S1+                                                                                          NoSelector+                                                                                          (Rec0+                                                                                             e))+                                                                      :*: (S1+                                                                                          NoSelector+                                                                                          (Rec0+                                                                                             f)+                                                                                        :*: S1+                                                                                                           NoSelector+                                                                                                           (Rec0+                                                                                                              g))))+                                                   :*: ((S1+                                                                        NoSelector+                                                                        (Rec0+                                                                           h)+                                                                      :*: (S1+                                                                                          NoSelector+                                                                                          (Rec0+                                                                                             i)+                                                                                        :*: S1+                                                                                                           NoSelector+                                                                                                           (Rec0+                                                                                                              j)))+                                                                     :*: ((S1+                                                                                          NoSelector+                                                                                          (Rec0+                                                                                             k)+                                                                                        :*: S1+                                                                                                           NoSelector+                                                                                                           (Rec0+                                                                                                              l))+                                                                                       :*: (S1+                                                                                                           NoSelector+                                                                                                           (Rec0+                                                                                                              m)+                                                                                                         :*: S1+                                                                                                                            NoSelector+                                                                                                                            Par1)))))++instance Generic+             (a, b, c, d, e, f, g, h, i, j, k, l, m, n) where+    type Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n) = Rep0Tuple14 a b c d e f g h i j k l m n++    from x+      = M1+          (case x of {+             (,,,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12 g13 g14+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             ((:*:)+                                (M1 (K1 g2))+                                (M1 (K1 g3))))+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g4))+                                (M1 (K1 g5)))+                             ((:*:)+                                (M1 (K1 g6))+                                (M1 (K1 g7)))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g8))+                             ((:*:)+                                (M1 (K1 g9))+                                (M1 (K1 g10))))+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g11))+                                (M1 (K1 g12)))+                             ((:*:)+                                (M1 (K1 g13))+                                (M1 (K1 g14)))))) })+    to (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 (K1 g1))+                                                                                       ((:*:) (M1 (K1 g2))+                                                                                                           (M1 (K1 g3))))+                                                                   ((:*:) ((:*:) (M1 (K1 g4))+                                                                                                           (M1 (K1 g5)))+                                                                                       ((:*:) (M1 (K1 g6))+                                                                                                           (M1 (K1 g7)))))+                                               ((:*:) ((:*:) (M1 (K1 g8))+                                                                                       ((:*:) (M1 (K1 g9))+                                                                                                           (M1 (K1 g10))))+                                                                   ((:*:) ((:*:) (M1 (K1 g11))+                                                                                                           (M1 (K1 g12)))+                                                                                       ((:*:) (M1 (K1 g13))+                                                                                                           (M1 (K1 g14)))))))+            -> (,,,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12 g13 g14 }++instance Generic1+             ((,,,,,,,,,,,,,) a b c d e f g h i j k l m) where+    type Rep1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m) = Rep1Tuple14 a b c d e f g h i j k l m++    from1 x+      = M1+          (case x of {+             (,,,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12 g13 g14+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             ((:*:)+                                (M1 (K1 g2))+                                (M1 (K1 g3))))+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g4))+                                (M1 (K1 g5)))+                             ((:*:)+                                (M1 (K1 g6))+                                (M1 (K1 g7)))))+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g8))+                             ((:*:)+                                (M1 (K1 g9))+                                (M1 (K1 g10))))+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g11))+                                (M1 (K1 g12)))+                             ((:*:)+                                (M1 (K1 g13))+                                (M1 (Par1 g14)))))) })+    to1 (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 g1)+                                                                                       ((:*:) (M1 g2)+                                                                                                           (M1 g3)))+                                                                   ((:*:) ((:*:) (M1 g4)+                                                                                                           (M1 g5))+                                                                                       ((:*:) (M1 g6)+                                                                                                           (M1 g7))))+                                               ((:*:) ((:*:) (M1 g8)+                                                                                       ((:*:) (M1 g9)+                                                                                                           (M1 g10)))+                                                                   ((:*:) ((:*:) (M1 g11)+                                                                                                           (M1 g12))+                                                                                       ((:*:) (M1 g13)+                                                                                                           (M1 g14))))))+            -> (,,,,,,,,,,,,,)+                 (unK1 g1) (unK1 g2)+                 (unK1 g3) (unK1 g4)+                 (unK1 g5) (unK1 g6)+                 (unK1 g7) (unK1 g8)+                 (unK1 g9) (unK1 g10)+                 (unK1 g11) (unK1 g12)+                 (unK1 g13) (unPar1 g14) }++data D1Tuple14+data C1_0Tuple14++instance Datatype D1Tuple14 where+    datatypeName _ = "(,,,,,,,,,,,,,)"+    moduleName _ = "GHC.Tuple"++instance Constructor C1_0Tuple14 where+    conName _ = "(,,,,,,,,,,,,,)"++-----++type Rep0Tuple15 a b c d e f g h i j k l m n o = D1+                                                   D1Tuple15+                                                   (C1+                                                      C1_0Tuple15+                                                      (((S1+                                                           NoSelector+                                                           (Rec0 a)+                                                         :*: (S1+                                                                             NoSelector+                                                                             (Rec0+                                                                                b)+                                                                           :*: S1+                                                                                              NoSelector+                                                                                              (Rec0+                                                                                                 c)))+                                                        :*: ((S1+                                                                             NoSelector+                                                                             (Rec0+                                                                                d)+                                                                           :*: S1+                                                                                              NoSelector+                                                                                              (Rec0+                                                                                                 e))+                                                                          :*: (S1+                                                                                              NoSelector+                                                                                              (Rec0+                                                                                                 f)+                                                                                            :*: S1+                                                                                                               NoSelector+                                                                                                               (Rec0+                                                                                                                  g))))+                                                       :*: (((S1+                                                                             NoSelector+                                                                             (Rec0+                                                                                h)+                                                                           :*: S1+                                                                                              NoSelector+                                                                                              (Rec0+                                                                                                 i))+                                                                          :*: (S1+                                                                                              NoSelector+                                                                                              (Rec0+                                                                                                 j)+                                                                                            :*: S1+                                                                                                               NoSelector+                                                                                                               (Rec0+                                                                                                                  k)))+                                                                         :*: ((S1+                                                                                              NoSelector+                                                                                              (Rec0+                                                                                                 l)+                                                                                            :*: S1+                                                                                                               NoSelector+                                                                                                               (Rec0+                                                                                                                  m))+                                                                                           :*: (S1+                                                                                                               NoSelector+                                                                                                               (Rec0+                                                                                                                  n)+                                                                                                             :*: S1+                                                                                                                                NoSelector+                                                                                                                                (Rec0+                                                                                                                                   o))))))+type Rep1Tuple15 a b c d e f g h i j k l m n = D1+                                                 D1Tuple15+                                                 (C1+                                                    C1_0Tuple15+                                                    (((S1+                                                         NoSelector+                                                         (Rec0 a)+                                                       :*: (S1+                                                                           NoSelector+                                                                           (Rec0+                                                                              b)+                                                                         :*: S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               c)))+                                                      :*: ((S1+                                                                           NoSelector+                                                                           (Rec0+                                                                              d)+                                                                         :*: S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               e))+                                                                        :*: (S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               f)+                                                                                          :*: S1+                                                                                                             NoSelector+                                                                                                             (Rec0+                                                                                                                g))))+                                                     :*: (((S1+                                                                           NoSelector+                                                                           (Rec0+                                                                              h)+                                                                         :*: S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               i))+                                                                        :*: (S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               j)+                                                                                          :*: S1+                                                                                                             NoSelector+                                                                                                             (Rec0+                                                                                                                k)))+                                                                       :*: ((S1+                                                                                            NoSelector+                                                                                            (Rec0+                                                                                               l)+                                                                                          :*: S1+                                                                                                             NoSelector+                                                                                                             (Rec0+                                                                                                                m))+                                                                                         :*: (S1+                                                                                                             NoSelector+                                                                                                             (Rec0+                                                                                                                n)+                                                                                                           :*: S1+                                                                                                                              NoSelector+                                                                                                                              Par1)))))++instance Generic+             (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) where+    type Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) = Rep0Tuple15 a b c d e f g h i j k l m n o++    from x+      = M1+          (case x of {+             (,,,,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12 g13 g14 g15+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             ((:*:)+                                (M1 (K1 g2))+                                (M1 (K1 g3))))+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g4))+                                (M1 (K1 g5)))+                             ((:*:)+                                (M1 (K1 g6))+                                (M1 (K1 g7)))))+                       ((:*:)+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g8))+                                (M1 (K1 g9)))+                             ((:*:)+                                (M1 (K1 g10))+                                (M1 (K1 g11))))+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g12))+                                (M1 (K1 g13)))+                             ((:*:)+                                (M1 (K1 g14))+                                (M1 (K1 g15)))))) })+    to (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 (K1 g1))+                                                                                       ((:*:) (M1 (K1 g2))+                                                                                                           (M1 (K1 g3))))+                                                                   ((:*:) ((:*:) (M1 (K1 g4))+                                                                                                           (M1 (K1 g5)))+                                                                                       ((:*:) (M1 (K1 g6))+                                                                                                           (M1 (K1 g7)))))+                                               ((:*:) ((:*:) ((:*:) (M1 (K1 g8))+                                                                                                           (M1 (K1 g9)))+                                                                                       ((:*:) (M1 (K1 g10))+                                                                                                           (M1 (K1 g11))))+                                                                   ((:*:) ((:*:) (M1 (K1 g12))+                                                                                                           (M1 (K1 g13)))+                                                                                       ((:*:) (M1 (K1 g14))+                                                                                                           (M1 (K1 g15)))))))+            -> (,,,,,,,,,,,,,,)+                 g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12 g13 g14 g15 }++instance Generic1+             ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n) where+    type Rep1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n) = Rep1Tuple15 a b c d e f g h i j k l m n++    from1 x+      = M1+          (case x of {+             (,,,,,,,,,,,,,,) g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11 g12 g13 g14 g15+               -> M1+                    ((:*:)+                       ((:*:)+                          ((:*:)+                             (M1 (K1 g1))+                             ((:*:)+                                (M1 (K1 g2))+                                (M1 (K1 g3))))+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g4))+                                (M1 (K1 g5)))+                             ((:*:)+                                (M1 (K1 g6))+                                (M1 (K1 g7)))))+                       ((:*:)+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g8))+                                (M1 (K1 g9)))+                             ((:*:)+                                (M1 (K1 g10))+                                (M1 (K1 g11))))+                          ((:*:)+                             ((:*:)+                                (M1 (K1 g12))+                                (M1 (K1 g13)))+                             ((:*:)+                                (M1 (K1 g14))+                                (M1 (Par1 g15)))))) })+    to1 (M1 x)+      = case x of {+          (M1 ((:*:) ((:*:) ((:*:) (M1 g1)+                                                                                       ((:*:) (M1 g2)+                                                                                                           (M1 g3)))+                                                                   ((:*:) ((:*:) (M1 g4)+                                                                                                           (M1 g5))+                                                                                       ((:*:) (M1 g6)+                                                                                                           (M1 g7))))+                                               ((:*:) ((:*:) ((:*:) (M1 g8)+                                                                                                           (M1 g9))+                                                                                       ((:*:) (M1 g10)+                                                                                                           (M1 g11)))+                                                                   ((:*:) ((:*:) (M1 g12)+                                                                                                           (M1 g13))+                                                                                       ((:*:) (M1 g14)+                                                                                                           (M1 g15))))))+            -> (,,,,,,,,,,,,,,)+                 (unK1 g1) (unK1 g2)+                 (unK1 g3) (unK1 g4)+                 (unK1 g5) (unK1 g6)+                 (unK1 g7) (unK1 g8)+                 (unK1 g9) (unK1 g10)+                 (unK1 g11) (unK1 g12)+                 (unK1 g13) (unK1 g14)+                 (unPar1 g15) }++data D1Tuple15+data C1_0Tuple15++instance Datatype D1Tuple15 where+    datatypeName _ = "(,,,,,,,,,,,,,,)"+    moduleName _ = "GHC.Tuple"++instance Constructor C1_0Tuple15 where+    conName _ = "(,,,,,,,,,,,,,,)"++# endif #endif  #if !(MIN_VERSION_base(4,14,0))
src/Generics/Deriving/TH/Internal.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE BangPatterns #-} {-# LANGUAGE CPP #-}  {- |@@ -18,7 +19,7 @@  import           Data.Char (isAlphaNum, ord) import           Data.Foldable (foldr')-import           Data.List+import qualified Data.List as List import qualified Data.Map as Map import           Data.Map as Map (Map) import           Data.Maybe (mapMaybe)@@ -197,11 +198,11 @@  -- | Construct a type via curried application. applyTyToTys :: Type -> [Type] -> Type-applyTyToTys = foldl' AppT+applyTyToTys = List.foldl' AppT  -- | Apply a type constructor name to type variable binders. applyTyToTvbs :: Name -> [TyVarBndr_ flag] -> Type-applyTyToTvbs = foldl' (\a -> AppT a . tyVarBndrToType) . ConT+applyTyToTvbs = List.foldl' (\a -> AppT a . tyVarBndrToType) . ConT  -- | Split an applied type into its individual components. For example, this: --@@ -363,10 +364,17 @@ shrink (_, b, c) = (b, c)  foldBal :: (a -> a -> a) -> a -> [a] -> a-foldBal _  x []  = x-foldBal _  _ [y] = y-foldBal op x l   = let (a,b) = splitAt (length l `div` 2) l-                   in foldBal op x a `op` foldBal op x b+{-# INLINE foldBal #-} -- inlined to produce specialised code for each op+foldBal op0 x0 xs0 = fold_bal op0 x0 (length xs0) xs0+  where+    fold_bal op x !n xs = case xs of+      []  -> x+      [a] -> a+      _   -> let !nl = n `div` 2+                 !nr = n - nl+                 (l,r) = splitAt nl xs+             in fold_bal op x nl l+                `op` fold_bal op x nr r  isNewtypeVariant :: DatatypeVariant_ -> Bool isNewtypeVariant Datatype_             = False
tests/ExampleSpec.hs view
@@ -241,9 +241,9 @@ # else   (a :: *) (b :: *) (c :: * -> *) (d :: *) (e :: *) # endif-newtype instance MyType3 (f p) (f p) f p q = MyType3Newtype q-data    instance MyType3 Bool  ()    f p q = MyType3True | MyType3False-data    instance MyType3 Int   ()    f p q = MyType3Hash q Addr# Char# Double# Float# Int# Word#+newtype instance MyType3 (f p) (f p) f p (q :: *) = MyType3Newtype q+data    instance MyType3 Bool  ()    f p q        = MyType3True | MyType3False+data    instance MyType3 Int   ()    f p (q :: *) = MyType3Hash q Addr# Char# Double# Float# Int# Word# #endif  $(deriveAll0And1 ''Empty)