Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC

Commits:

24 changed files:

Changes:

  • changelog.d/lib-add-tuple-tyfam-27179
    1
    +section: ghc-experimental
    
    2
    +synopsis: Define and export type families ``Tuple``, ``Constraints``, ``Tuple#``, ``Sum#`` (GHC Proposal `#475 <https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0475-tuple-syntax.rst>`_ "Non-punning list and tuple syntax")
    
    3
    +issues: #27179
    
    4
    +mrs: !15898

  • compiler/GHC/Settings/Constants.hs
    ... ... @@ -17,8 +17,8 @@ mAX_TUPLE_SIZE = 64 -- Should really match the number
    17 17
     mAX_CTUPLE_SIZE :: Int   -- Constraint tuples
    
    18 18
     mAX_CTUPLE_SIZE = 64     -- Should match the number of decls in GHC.Classes
    
    19 19
     
    
    20
    -mAX_SUM_SIZE :: Int      -- We use 6 bits to record sum size,
    
    21
    -mAX_SUM_SIZE = 63        -- so max sum size is 63.  Sadly inconsistent.
    
    20
    +mAX_SUM_SIZE :: Int
    
    21
    +mAX_SUM_SIZE = 64        -- Should match the number of decls in GHC.Internal.Types
    
    22 22
     
    
    23 23
     -- | Default maximum depth for both class instance search and type family
    
    24 24
     -- reduction. See also #5395.
    

  • libraries/base/src/GHC/Base.hs
    ... ... @@ -527,4 +527,5 @@ import GHC.Types hiding (
    527 527
       Sum61#,
    
    528 528
       Sum62#,
    
    529 529
       Sum63#,
    
    530
    +  Sum64#,
    
    530 531
       )

  • libraries/base/src/GHC/Exts.hs
    ... ... @@ -500,4 +500,5 @@ import GHC.Types hiding (
    500 500
       Sum61#,
    
    501 501
       Sum62#,
    
    502 502
       Sum63#,
    
    503
    +  Sum64#,
    
    503 504
       )

  • libraries/ghc-experimental/src/Data/Sum/Experimental.hs
    1 1
     {-# LANGUAGE Trustworthy #-}
    
    2 2
     {-# LANGUAGE NoImplicitPrelude, MagicHash, UnboxedSums, NoListTuplePuns #-}
    
    3
    +{-# LANGUAGE ExplicitForAll, StandaloneKindSignatures, PolyKinds, DataKinds, TypeFamilyDependencies #-}
    
    3 4
     
    
    4 5
     {-
    
    5 6
     Module      :  Data.Sum.Experimental
    
    ... ... @@ -78,8 +79,83 @@ module Data.Sum.Experimental (
    78 79
       Sum61#,
    
    79 80
       Sum62#,
    
    80 81
       Sum63#,
    
    82
    +  Sum64#,
    
    83
    +
    
    84
    +  -- * Type families
    
    85
    +  TupleArgKind#,
    
    86
    +  Sum#,
    
    81 87
     ) where
    
    82 88
     
    
    83 89
     import GHC.Internal.Types
    
    90
    +import GHC.TypeLits
    
    91
    +import Data.Tuple.Experimental (TupleArgKind#)
    
    84 92
     
    
    85 93
     default ()
    
    94
    +
    
    95
    +type Sum# :: forall (reps :: List RuntimeRep). TupleArgKind# reps -> TYPE (SumRep reps)
    
    96
    +type family Sum# ts where
    
    97
    +  Sum# () = TypeError (Text "GHC does not support empty unboxed sums. Consider Data.Void.Void instead.")
    
    98
    +  Sum# (a :: TYPE r) = TypeError (Text "GHC does not support unary unboxed sums. Consider Data.Tuple.Solo# instead.")
    
    99
    +  Sum# (a, b) = Sum2# a b
    
    100
    +  Sum# (a, b, c) = Sum3# a b c
    
    101
    +  Sum# (a, b, c, d) = Sum4# a b c d
    
    102
    +  Sum# (a, b, c, d, e) = Sum5# a b c d e
    
    103
    +  Sum# (a, b, c, d, e, f) = Sum6# a b c d e f
    
    104
    +  Sum# (a, b, c, d, e, f, g) = Sum7# a b c d e f g
    
    105
    +  Sum# (a, b, c, d, e, f, g, h) = Sum8# a b c d e f g h
    
    106
    +  Sum# (a, b, c, d, e, f, g, h, i) = Sum9# a b c d e f g h i
    
    107
    +  Sum# (a, b, c, d, e, f, g, h, i, j) = Sum10# a b c d e f g h i j
    
    108
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k) = Sum11# a b c d e f g h i j k
    
    109
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l) = Sum12# a b c d e f g h i j k l
    
    110
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m) = Sum13# a b c d e f g h i j k l m
    
    111
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n) = Sum14# a b c d e f g h i j k l m n
    
    112
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) = Sum15# a b c d e f g h i j k l m n o
    
    113
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) = Sum16# a b c d e f g h i j k l m n o p
    
    114
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) = Sum17# a b c d e f g h i j k l m n o p q
    
    115
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) = Sum18# a b c d e f g h i j k l m n o p q r
    
    116
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) = Sum19# a b c d e f g h i j k l m n o p q r s
    
    117
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) = Sum20# a b c d e f g h i j k l m n o p q r s t
    
    118
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) = Sum21# a b c d e f g h i j k l m n o p q r s t u
    
    119
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) = Sum22# a b c d e f g h i j k l m n o p q r s t u v
    
    120
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) = Sum23# a b c d e f g h i j k l m n o p q r s t u v w
    
    121
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) = Sum24# a b c d e f g h i j k l m n o p q r s t u v w x
    
    122
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) = Sum25# a b c d e f g h i j k l m n o p q r s t u v w x y
    
    123
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) = Sum26# a b c d e f g h i j k l m n o p q r s t u v w x y z
    
    124
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa) = Sum27# a b c d e f g h i j k l m n o p q r s t u v w x y z aa
    
    125
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab) = Sum28# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab
    
    126
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac) = Sum29# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac
    
    127
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad) = Sum30# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad
    
    128
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae) = Sum31# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae
    
    129
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af) = Sum32# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af
    
    130
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag) = Sum33# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag
    
    131
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah) = Sum34# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah
    
    132
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai) = Sum35# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai
    
    133
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj) = Sum36# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj
    
    134
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak) = Sum37# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak
    
    135
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al) = Sum38# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al
    
    136
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am) = Sum39# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am
    
    137
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an) = Sum40# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an
    
    138
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao) = Sum41# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao
    
    139
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap) = Sum42# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap
    
    140
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq) = Sum43# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq
    
    141
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar) = Sum44# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar
    
    142
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as) = Sum45# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as
    
    143
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at) = Sum46# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at
    
    144
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au) = Sum47# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au
    
    145
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av) = Sum48# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av
    
    146
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw) = Sum49# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw
    
    147
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax) = Sum50# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax
    
    148
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay) = Sum51# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay
    
    149
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az) = Sum52# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az
    
    150
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba) = Sum53# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba
    
    151
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb) = Sum54# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb
    
    152
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc) = Sum55# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc
    
    153
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd) = Sum56# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd
    
    154
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be) = Sum57# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be
    
    155
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf) = Sum58# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf
    
    156
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg) = Sum59# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg
    
    157
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh) = Sum60# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh
    
    158
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi) = Sum61# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi
    
    159
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj) = Sum62# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj
    
    160
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk) = Sum63# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk
    
    161
    +  Sum# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl) = Sum64# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl

  • libraries/ghc-experimental/src/Data/Tuple/Experimental.hs
    1 1
     {-# LANGUAGE Trustworthy #-}
    
    2 2
     {-# LANGUAGE NoImplicitPrelude, MagicHash, UnboxedTuples, NoListTuplePuns #-}
    
    3
    +{-# LANGUAGE ExplicitForAll, StandaloneKindSignatures, PolyKinds, DataKinds, TypeFamilyDependencies #-}
    
    3 4
     
    
    4 5
     {-
    
    5 6
     Module      :  Data.Tuple.Experimental
    
    ... ... @@ -156,10 +157,427 @@ module Data.Tuple.Experimental (
    156 157
       CTuple62,
    
    157 158
       CTuple63,
    
    158 159
       CTuple64,
    
    160
    +
    
    161
    +  -- * Type families
    
    162
    +  TupleArgKind,
    
    163
    +  Tuple,
    
    164
    +  ConstraintsArgKind,
    
    165
    +  Constraints,
    
    166
    +  TupleArgKind#,
    
    167
    +  Tuple#,
    
    159 168
     ) where
    
    160 169
     
    
    161 170
     import GHC.Internal.Tuple
    
    162 171
     import GHC.Internal.Types
    
    163 172
     import GHC.Internal.Classes
    
    173
    +import GHC.TypeLits
    
    164 174
     
    
    165 175
     default ()
    
    176
    +
    
    177
    +type TupleArgKind :: Nat -> Type
    
    178
    +type family TupleArgKind n = r | r -> n where
    
    179
    +  TupleArgKind 0 = Unit
    
    180
    +  TupleArgKind 1 = Type
    
    181
    +  TupleArgKind 2 = Tuple2 Type Type
    
    182
    +  TupleArgKind 3 = Tuple3 Type Type Type
    
    183
    +  TupleArgKind 4 = Tuple4 Type Type Type Type
    
    184
    +  TupleArgKind 5 = Tuple5 Type Type Type Type Type
    
    185
    +  TupleArgKind 6 = Tuple6 Type Type Type Type Type Type
    
    186
    +  TupleArgKind 7 = Tuple7 Type Type Type Type Type Type Type
    
    187
    +  TupleArgKind 8 = Tuple8 Type Type Type Type Type Type Type Type
    
    188
    +  TupleArgKind 9 = Tuple9 Type Type Type Type Type Type Type Type Type
    
    189
    +  TupleArgKind 10 = Tuple10 Type Type Type Type Type Type Type Type Type Type
    
    190
    +  TupleArgKind 11 = Tuple11 Type Type Type Type Type Type Type Type Type Type Type
    
    191
    +  TupleArgKind 12 = Tuple12 Type Type Type Type Type Type Type Type Type Type Type Type
    
    192
    +  TupleArgKind 13 = Tuple13 Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    193
    +  TupleArgKind 14 = Tuple14 Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    194
    +  TupleArgKind 15 = Tuple15 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    195
    +  TupleArgKind 16 = Tuple16 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    196
    +  TupleArgKind 17 = Tuple17 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    197
    +  TupleArgKind 18 = Tuple18 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    198
    +  TupleArgKind 19 = Tuple19 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    199
    +  TupleArgKind 20 = Tuple20 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    200
    +  TupleArgKind 21 = Tuple21 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    201
    +  TupleArgKind 22 = Tuple22 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    202
    +  TupleArgKind 23 = Tuple23 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    203
    +  TupleArgKind 24 = Tuple24 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    204
    +  TupleArgKind 25 = Tuple25 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    205
    +  TupleArgKind 26 = Tuple26 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    206
    +  TupleArgKind 27 = Tuple27 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    207
    +  TupleArgKind 28 = Tuple28 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    208
    +  TupleArgKind 29 = Tuple29 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    209
    +  TupleArgKind 30 = Tuple30 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    210
    +  TupleArgKind 31 = Tuple31 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    211
    +  TupleArgKind 32 = Tuple32 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    212
    +  TupleArgKind 33 = Tuple33 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    213
    +  TupleArgKind 34 = Tuple34 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    214
    +  TupleArgKind 35 = Tuple35 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    215
    +  TupleArgKind 36 = Tuple36 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    216
    +  TupleArgKind 37 = Tuple37 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    217
    +  TupleArgKind 38 = Tuple38 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    218
    +  TupleArgKind 39 = Tuple39 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    219
    +  TupleArgKind 40 = Tuple40 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    220
    +  TupleArgKind 41 = Tuple41 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    221
    +  TupleArgKind 42 = Tuple42 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    222
    +  TupleArgKind 43 = Tuple43 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    223
    +  TupleArgKind 44 = Tuple44 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    224
    +  TupleArgKind 45 = Tuple45 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    225
    +  TupleArgKind 46 = Tuple46 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    226
    +  TupleArgKind 47 = Tuple47 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    227
    +  TupleArgKind 48 = Tuple48 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    228
    +  TupleArgKind 49 = Tuple49 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    229
    +  TupleArgKind 50 = Tuple50 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    230
    +  TupleArgKind 51 = Tuple51 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    231
    +  TupleArgKind 52 = Tuple52 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    232
    +  TupleArgKind 53 = Tuple53 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    233
    +  TupleArgKind 54 = Tuple54 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    234
    +  TupleArgKind 55 = Tuple55 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    235
    +  TupleArgKind 56 = Tuple56 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    236
    +  TupleArgKind 57 = Tuple57 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    237
    +  TupleArgKind 58 = Tuple58 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    238
    +  TupleArgKind 59 = Tuple59 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    239
    +  TupleArgKind 60 = Tuple60 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    240
    +  TupleArgKind 61 = Tuple61 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    241
    +  TupleArgKind 62 = Tuple62 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    242
    +  TupleArgKind 63 = Tuple63 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    243
    +  TupleArgKind 64 = Tuple64 Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type Type
    
    244
    +
    
    245
    +type Tuple :: forall (n :: Nat). TupleArgKind n -> Type
    
    246
    +type family Tuple ts where
    
    247
    +  Tuple () = Unit
    
    248
    +  Tuple (a :: Type) = a
    
    249
    +  Tuple (a, b) = Tuple2 a b
    
    250
    +  Tuple (a, b, c) = Tuple3 a b c
    
    251
    +  Tuple (a, b, c, d) = Tuple4 a b c d
    
    252
    +  Tuple (a, b, c, d, e) = Tuple5 a b c d e
    
    253
    +  Tuple (a, b, c, d, e, f) = Tuple6 a b c d e f
    
    254
    +  Tuple (a, b, c, d, e, f, g) = Tuple7 a b c d e f g
    
    255
    +  Tuple (a, b, c, d, e, f, g, h) = Tuple8 a b c d e f g h
    
    256
    +  Tuple (a, b, c, d, e, f, g, h, i) = Tuple9 a b c d e f g h i
    
    257
    +  Tuple (a, b, c, d, e, f, g, h, i, j) = Tuple10 a b c d e f g h i j
    
    258
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k) = Tuple11 a b c d e f g h i j k
    
    259
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l) = Tuple12 a b c d e f g h i j k l
    
    260
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m) = Tuple13 a b c d e f g h i j k l m
    
    261
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n) = Tuple14 a b c d e f g h i j k l m n
    
    262
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) = Tuple15 a b c d e f g h i j k l m n o
    
    263
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) = Tuple16 a b c d e f g h i j k l m n o p
    
    264
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) = Tuple17 a b c d e f g h i j k l m n o p q
    
    265
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) = Tuple18 a b c d e f g h i j k l m n o p q r
    
    266
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) = Tuple19 a b c d e f g h i j k l m n o p q r s
    
    267
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) = Tuple20 a b c d e f g h i j k l m n o p q r s t
    
    268
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) = Tuple21 a b c d e f g h i j k l m n o p q r s t u
    
    269
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) = Tuple22 a b c d e f g h i j k l m n o p q r s t u v
    
    270
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) = Tuple23 a b c d e f g h i j k l m n o p q r s t u v w
    
    271
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) = Tuple24 a b c d e f g h i j k l m n o p q r s t u v w x
    
    272
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) = Tuple25 a b c d e f g h i j k l m n o p q r s t u v w x y
    
    273
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) = Tuple26 a b c d e f g h i j k l m n o p q r s t u v w x y z
    
    274
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa) = Tuple27 a b c d e f g h i j k l m n o p q r s t u v w x y z aa
    
    275
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab) = Tuple28 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab
    
    276
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac) = Tuple29 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac
    
    277
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad) = Tuple30 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad
    
    278
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae) = Tuple31 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae
    
    279
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af) = Tuple32 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af
    
    280
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag) = Tuple33 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag
    
    281
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah) = Tuple34 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah
    
    282
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai) = Tuple35 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai
    
    283
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj) = Tuple36 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj
    
    284
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak) = Tuple37 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak
    
    285
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al) = Tuple38 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al
    
    286
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am) = Tuple39 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am
    
    287
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an) = Tuple40 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an
    
    288
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao) = Tuple41 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao
    
    289
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap) = Tuple42 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap
    
    290
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq) = Tuple43 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq
    
    291
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar) = Tuple44 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar
    
    292
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as) = Tuple45 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as
    
    293
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at) = Tuple46 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at
    
    294
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au) = Tuple47 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au
    
    295
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av) = Tuple48 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av
    
    296
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw) = Tuple49 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw
    
    297
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax) = Tuple50 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax
    
    298
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay) = Tuple51 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay
    
    299
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az) = Tuple52 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az
    
    300
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba) = Tuple53 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba
    
    301
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb) = Tuple54 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb
    
    302
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc) = Tuple55 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc
    
    303
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd) = Tuple56 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd
    
    304
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be) = Tuple57 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be
    
    305
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf) = Tuple58 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf
    
    306
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg) = Tuple59 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg
    
    307
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh) = Tuple60 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh
    
    308
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi) = Tuple61 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi
    
    309
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj) = Tuple62 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj
    
    310
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk) = Tuple63 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk
    
    311
    +  Tuple (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl) = Tuple64 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl
    
    312
    +
    
    313
    +type ConstraintsArgKind :: Nat -> Type
    
    314
    +type family ConstraintsArgKind n = r | r -> n where
    
    315
    +  ConstraintsArgKind 0 = Unit
    
    316
    +  ConstraintsArgKind 1 = Constraint
    
    317
    +  ConstraintsArgKind 2 = Tuple2 Constraint Constraint
    
    318
    +  ConstraintsArgKind 3 = Tuple3 Constraint Constraint Constraint
    
    319
    +  ConstraintsArgKind 4 = Tuple4 Constraint Constraint Constraint Constraint
    
    320
    +  ConstraintsArgKind 5 = Tuple5 Constraint Constraint Constraint Constraint Constraint
    
    321
    +  ConstraintsArgKind 6 = Tuple6 Constraint Constraint Constraint Constraint Constraint Constraint
    
    322
    +  ConstraintsArgKind 7 = Tuple7 Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    323
    +  ConstraintsArgKind 8 = Tuple8 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    324
    +  ConstraintsArgKind 9 = Tuple9 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    325
    +  ConstraintsArgKind 10 = Tuple10 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    326
    +  ConstraintsArgKind 11 = Tuple11 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    327
    +  ConstraintsArgKind 12 = Tuple12 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    328
    +  ConstraintsArgKind 13 = Tuple13 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    329
    +  ConstraintsArgKind 14 = Tuple14 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    330
    +  ConstraintsArgKind 15 = Tuple15 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    331
    +  ConstraintsArgKind 16 = Tuple16 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    332
    +  ConstraintsArgKind 17 = Tuple17 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    333
    +  ConstraintsArgKind 18 = Tuple18 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    334
    +  ConstraintsArgKind 19 = Tuple19 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    335
    +  ConstraintsArgKind 20 = Tuple20 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    336
    +  ConstraintsArgKind 21 = Tuple21 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    337
    +  ConstraintsArgKind 22 = Tuple22 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    338
    +  ConstraintsArgKind 23 = Tuple23 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    339
    +  ConstraintsArgKind 24 = Tuple24 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    340
    +  ConstraintsArgKind 25 = Tuple25 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    341
    +  ConstraintsArgKind 26 = Tuple26 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    342
    +  ConstraintsArgKind 27 = Tuple27 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    343
    +  ConstraintsArgKind 28 = Tuple28 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    344
    +  ConstraintsArgKind 29 = Tuple29 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    345
    +  ConstraintsArgKind 30 = Tuple30 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    346
    +  ConstraintsArgKind 31 = Tuple31 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    347
    +  ConstraintsArgKind 32 = Tuple32 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    348
    +  ConstraintsArgKind 33 = Tuple33 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    349
    +  ConstraintsArgKind 34 = Tuple34 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    350
    +  ConstraintsArgKind 35 = Tuple35 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    351
    +  ConstraintsArgKind 36 = Tuple36 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    352
    +  ConstraintsArgKind 37 = Tuple37 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    353
    +  ConstraintsArgKind 38 = Tuple38 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    354
    +  ConstraintsArgKind 39 = Tuple39 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    355
    +  ConstraintsArgKind 40 = Tuple40 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    356
    +  ConstraintsArgKind 41 = Tuple41 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    357
    +  ConstraintsArgKind 42 = Tuple42 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    358
    +  ConstraintsArgKind 43 = Tuple43 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    359
    +  ConstraintsArgKind 44 = Tuple44 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    360
    +  ConstraintsArgKind 45 = Tuple45 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    361
    +  ConstraintsArgKind 46 = Tuple46 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    362
    +  ConstraintsArgKind 47 = Tuple47 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    363
    +  ConstraintsArgKind 48 = Tuple48 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    364
    +  ConstraintsArgKind 49 = Tuple49 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    365
    +  ConstraintsArgKind 50 = Tuple50 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    366
    +  ConstraintsArgKind 51 = Tuple51 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    367
    +  ConstraintsArgKind 52 = Tuple52 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    368
    +  ConstraintsArgKind 53 = Tuple53 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    369
    +  ConstraintsArgKind 54 = Tuple54 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    370
    +  ConstraintsArgKind 55 = Tuple55 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    371
    +  ConstraintsArgKind 56 = Tuple56 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    372
    +  ConstraintsArgKind 57 = Tuple57 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    373
    +  ConstraintsArgKind 58 = Tuple58 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    374
    +  ConstraintsArgKind 59 = Tuple59 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    375
    +  ConstraintsArgKind 60 = Tuple60 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    376
    +  ConstraintsArgKind 61 = Tuple61 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    377
    +  ConstraintsArgKind 62 = Tuple62 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    378
    +  ConstraintsArgKind 63 = Tuple63 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    379
    +  ConstraintsArgKind 64 = Tuple64 Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint Constraint
    
    380
    +
    
    381
    +type Constraints :: forall (n :: Nat). ConstraintsArgKind n -> Constraint
    
    382
    +type family Constraints ts where
    
    383
    +  Constraints () = CUnit
    
    384
    +  Constraints (a :: Constraint) = a
    
    385
    +  Constraints (a, b) = CTuple2 a b
    
    386
    +  Constraints (a, b, c) = CTuple3 a b c
    
    387
    +  Constraints (a, b, c, d) = CTuple4 a b c d
    
    388
    +  Constraints (a, b, c, d, e) = CTuple5 a b c d e
    
    389
    +  Constraints (a, b, c, d, e, f) = CTuple6 a b c d e f
    
    390
    +  Constraints (a, b, c, d, e, f, g) = CTuple7 a b c d e f g
    
    391
    +  Constraints (a, b, c, d, e, f, g, h) = CTuple8 a b c d e f g h
    
    392
    +  Constraints (a, b, c, d, e, f, g, h, i) = CTuple9 a b c d e f g h i
    
    393
    +  Constraints (a, b, c, d, e, f, g, h, i, j) = CTuple10 a b c d e f g h i j
    
    394
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k) = CTuple11 a b c d e f g h i j k
    
    395
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l) = CTuple12 a b c d e f g h i j k l
    
    396
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m) = CTuple13 a b c d e f g h i j k l m
    
    397
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n) = CTuple14 a b c d e f g h i j k l m n
    
    398
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) = CTuple15 a b c d e f g h i j k l m n o
    
    399
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) = CTuple16 a b c d e f g h i j k l m n o p
    
    400
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) = CTuple17 a b c d e f g h i j k l m n o p q
    
    401
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) = CTuple18 a b c d e f g h i j k l m n o p q r
    
    402
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) = CTuple19 a b c d e f g h i j k l m n o p q r s
    
    403
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) = CTuple20 a b c d e f g h i j k l m n o p q r s t
    
    404
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) = CTuple21 a b c d e f g h i j k l m n o p q r s t u
    
    405
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) = CTuple22 a b c d e f g h i j k l m n o p q r s t u v
    
    406
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) = CTuple23 a b c d e f g h i j k l m n o p q r s t u v w
    
    407
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) = CTuple24 a b c d e f g h i j k l m n o p q r s t u v w x
    
    408
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) = CTuple25 a b c d e f g h i j k l m n o p q r s t u v w x y
    
    409
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) = CTuple26 a b c d e f g h i j k l m n o p q r s t u v w x y z
    
    410
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa) = CTuple27 a b c d e f g h i j k l m n o p q r s t u v w x y z aa
    
    411
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab) = CTuple28 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab
    
    412
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac) = CTuple29 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac
    
    413
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad) = CTuple30 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad
    
    414
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae) = CTuple31 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae
    
    415
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af) = CTuple32 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af
    
    416
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag) = CTuple33 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag
    
    417
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah) = CTuple34 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah
    
    418
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai) = CTuple35 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai
    
    419
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj) = CTuple36 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj
    
    420
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak) = CTuple37 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak
    
    421
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al) = CTuple38 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al
    
    422
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am) = CTuple39 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am
    
    423
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an) = CTuple40 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an
    
    424
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao) = CTuple41 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao
    
    425
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap) = CTuple42 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap
    
    426
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq) = CTuple43 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq
    
    427
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar) = CTuple44 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar
    
    428
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as) = CTuple45 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as
    
    429
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at) = CTuple46 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at
    
    430
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au) = CTuple47 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au
    
    431
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av) = CTuple48 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av
    
    432
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw) = CTuple49 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw
    
    433
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax) = CTuple50 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax
    
    434
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay) = CTuple51 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay
    
    435
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az) = CTuple52 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az
    
    436
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba) = CTuple53 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba
    
    437
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb) = CTuple54 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb
    
    438
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc) = CTuple55 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc
    
    439
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd) = CTuple56 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd
    
    440
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be) = CTuple57 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be
    
    441
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf) = CTuple58 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf
    
    442
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg) = CTuple59 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg
    
    443
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh) = CTuple60 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh
    
    444
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi) = CTuple61 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi
    
    445
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj) = CTuple62 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj
    
    446
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk) = CTuple63 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk
    
    447
    +  Constraints (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl) = CTuple64 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl
    
    448
    +
    
    449
    +type TupleArgKind# :: List RuntimeRep -> Type
    
    450
    +type family TupleArgKind# reps where
    
    451
    +  TupleArgKind# [] = Unit
    
    452
    +  TupleArgKind# [r1] = TYPE r1
    
    453
    +  TupleArgKind# [a, b] = Tuple2 (TYPE a) (TYPE b)
    
    454
    +  TupleArgKind# [a, b, c] = Tuple3 (TYPE a) (TYPE b) (TYPE c)
    
    455
    +  TupleArgKind# [a, b, c, d] = Tuple4 (TYPE a) (TYPE b) (TYPE c) (TYPE d)
    
    456
    +  TupleArgKind# [a, b, c, d, e] = Tuple5 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e)
    
    457
    +  TupleArgKind# [a, b, c, d, e, f] = Tuple6 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f)
    
    458
    +  TupleArgKind# [a, b, c, d, e, f, g] = Tuple7 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g)
    
    459
    +  TupleArgKind# [a, b, c, d, e, f, g, h] = Tuple8 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h)
    
    460
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i] = Tuple9 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i)
    
    461
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j] = Tuple10 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j)
    
    462
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k] = Tuple11 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k)
    
    463
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l] = Tuple12 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l)
    
    464
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m] = Tuple13 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m)
    
    465
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n] = Tuple14 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n)
    
    466
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o] = Tuple15 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o)
    
    467
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p] = Tuple16 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p)
    
    468
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q] = Tuple17 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q)
    
    469
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r] = Tuple18 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r)
    
    470
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s] = Tuple19 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s)
    
    471
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t] = Tuple20 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t)
    
    472
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u] = Tuple21 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u)
    
    473
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v] = Tuple22 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v)
    
    474
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w] = Tuple23 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w)
    
    475
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x] = Tuple24 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x)
    
    476
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y] = Tuple25 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y)
    
    477
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z] = Tuple26 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z)
    
    478
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa] = Tuple27 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa)
    
    479
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab] = Tuple28 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab)
    
    480
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac] = Tuple29 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac)
    
    481
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad] = Tuple30 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad)
    
    482
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae] = Tuple31 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae)
    
    483
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af] = Tuple32 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af)
    
    484
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag] = Tuple33 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag)
    
    485
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah] = Tuple34 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah)
    
    486
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai] = Tuple35 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai)
    
    487
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj] = Tuple36 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj)
    
    488
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak] = Tuple37 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak)
    
    489
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al] = Tuple38 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al)
    
    490
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am] = Tuple39 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am)
    
    491
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an] = Tuple40 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an)
    
    492
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao] = Tuple41 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao)
    
    493
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap] = Tuple42 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap)
    
    494
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq] = Tuple43 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq)
    
    495
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar] = Tuple44 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar)
    
    496
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as] = Tuple45 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as)
    
    497
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at] = Tuple46 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at)
    
    498
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au] = Tuple47 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au)
    
    499
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av] = Tuple48 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av)
    
    500
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw] = Tuple49 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw)
    
    501
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax] = Tuple50 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax)
    
    502
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay] = Tuple51 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay)
    
    503
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az] = Tuple52 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az)
    
    504
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba] = Tuple53 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba)
    
    505
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb] = Tuple54 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb)
    
    506
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc] = Tuple55 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb) (TYPE bc)
    
    507
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd] = Tuple56 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb) (TYPE bc) (TYPE bd)
    
    508
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be] = Tuple57 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb) (TYPE bc) (TYPE bd) (TYPE be)
    
    509
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf] = Tuple58 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb) (TYPE bc) (TYPE bd) (TYPE be) (TYPE bf)
    
    510
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg] = Tuple59 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb) (TYPE bc) (TYPE bd) (TYPE be) (TYPE bf) (TYPE bg)
    
    511
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh] = Tuple60 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb) (TYPE bc) (TYPE bd) (TYPE be) (TYPE bf) (TYPE bg) (TYPE bh)
    
    512
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi] = Tuple61 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb) (TYPE bc) (TYPE bd) (TYPE be) (TYPE bf) (TYPE bg) (TYPE bh) (TYPE bi)
    
    513
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj] = Tuple62 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb) (TYPE bc) (TYPE bd) (TYPE be) (TYPE bf) (TYPE bg) (TYPE bh) (TYPE bi) (TYPE bj)
    
    514
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk] = Tuple63 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb) (TYPE bc) (TYPE bd) (TYPE be) (TYPE bf) (TYPE bg) (TYPE bh) (TYPE bi) (TYPE bj) (TYPE bk)
    
    515
    +  TupleArgKind# [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl] = Tuple64 (TYPE a) (TYPE b) (TYPE c) (TYPE d) (TYPE e) (TYPE f) (TYPE g) (TYPE h) (TYPE i) (TYPE j) (TYPE k) (TYPE l) (TYPE m) (TYPE n) (TYPE o) (TYPE p) (TYPE q) (TYPE r) (TYPE s) (TYPE t) (TYPE u) (TYPE v) (TYPE w) (TYPE x) (TYPE y) (TYPE z) (TYPE aa) (TYPE ab) (TYPE ac) (TYPE ad) (TYPE ae) (TYPE af) (TYPE ag) (TYPE ah) (TYPE ai) (TYPE aj) (TYPE ak) (TYPE al) (TYPE am) (TYPE an) (TYPE ao) (TYPE ap) (TYPE aq) (TYPE ar) (TYPE as) (TYPE at) (TYPE au) (TYPE av) (TYPE aw) (TYPE ax) (TYPE ay) (TYPE az) (TYPE ba) (TYPE bb) (TYPE bc) (TYPE bd) (TYPE be) (TYPE bf) (TYPE bg) (TYPE bh) (TYPE bi) (TYPE bj) (TYPE bk) (TYPE bl)
    
    516
    +
    
    517
    +type Tuple# :: forall (reps :: List RuntimeRep). TupleArgKind# reps -> TYPE (TupleRep reps)
    
    518
    +type family Tuple# ts where
    
    519
    +  Tuple# () = Unit#
    
    520
    +  Tuple# (a :: TYPE r) = TypeError (Text "Tuple# does not work for 1-tuples; use Solo#.")
    
    521
    +  Tuple# (a, b) = Tuple2# a b
    
    522
    +  Tuple# (a, b, c) = Tuple3# a b c
    
    523
    +  Tuple# (a, b, c, d) = Tuple4# a b c d
    
    524
    +  Tuple# (a, b, c, d, e) = Tuple5# a b c d e
    
    525
    +  Tuple# (a, b, c, d, e, f) = Tuple6# a b c d e f
    
    526
    +  Tuple# (a, b, c, d, e, f, g) = Tuple7# a b c d e f g
    
    527
    +  Tuple# (a, b, c, d, e, f, g, h) = Tuple8# a b c d e f g h
    
    528
    +  Tuple# (a, b, c, d, e, f, g, h, i) = Tuple9# a b c d e f g h i
    
    529
    +  Tuple# (a, b, c, d, e, f, g, h, i, j) = Tuple10# a b c d e f g h i j
    
    530
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k) = Tuple11# a b c d e f g h i j k
    
    531
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l) = Tuple12# a b c d e f g h i j k l
    
    532
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m) = Tuple13# a b c d e f g h i j k l m
    
    533
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n) = Tuple14# a b c d e f g h i j k l m n
    
    534
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) = Tuple15# a b c d e f g h i j k l m n o
    
    535
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) = Tuple16# a b c d e f g h i j k l m n o p
    
    536
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) = Tuple17# a b c d e f g h i j k l m n o p q
    
    537
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) = Tuple18# a b c d e f g h i j k l m n o p q r
    
    538
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) = Tuple19# a b c d e f g h i j k l m n o p q r s
    
    539
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) = Tuple20# a b c d e f g h i j k l m n o p q r s t
    
    540
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) = Tuple21# a b c d e f g h i j k l m n o p q r s t u
    
    541
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) = Tuple22# a b c d e f g h i j k l m n o p q r s t u v
    
    542
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) = Tuple23# a b c d e f g h i j k l m n o p q r s t u v w
    
    543
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) = Tuple24# a b c d e f g h i j k l m n o p q r s t u v w x
    
    544
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) = Tuple25# a b c d e f g h i j k l m n o p q r s t u v w x y
    
    545
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) = Tuple26# a b c d e f g h i j k l m n o p q r s t u v w x y z
    
    546
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa) = Tuple27# a b c d e f g h i j k l m n o p q r s t u v w x y z aa
    
    547
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab) = Tuple28# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab
    
    548
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac) = Tuple29# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac
    
    549
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad) = Tuple30# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad
    
    550
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae) = Tuple31# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae
    
    551
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af) = Tuple32# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af
    
    552
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag) = Tuple33# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag
    
    553
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah) = Tuple34# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah
    
    554
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai) = Tuple35# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai
    
    555
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj) = Tuple36# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj
    
    556
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak) = Tuple37# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak
    
    557
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al) = Tuple38# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al
    
    558
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am) = Tuple39# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am
    
    559
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an) = Tuple40# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an
    
    560
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao) = Tuple41# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao
    
    561
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap) = Tuple42# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap
    
    562
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq) = Tuple43# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq
    
    563
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar) = Tuple44# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar
    
    564
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as) = Tuple45# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as
    
    565
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at) = Tuple46# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at
    
    566
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au) = Tuple47# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au
    
    567
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av) = Tuple48# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av
    
    568
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw) = Tuple49# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw
    
    569
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax) = Tuple50# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax
    
    570
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay) = Tuple51# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay
    
    571
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az) = Tuple52# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az
    
    572
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba) = Tuple53# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba
    
    573
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb) = Tuple54# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb
    
    574
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc) = Tuple55# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc
    
    575
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd) = Tuple56# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd
    
    576
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be) = Tuple57# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be
    
    577
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf) = Tuple58# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf
    
    578
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg) = Tuple59# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg
    
    579
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh) = Tuple60# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh
    
    580
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi) = Tuple61# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi
    
    581
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj) = Tuple62# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj
    
    582
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk) = Tuple63# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk
    
    583
    +  Tuple# (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl) = Tuple64# a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl

  • libraries/ghc-internal/src/GHC/Internal/Base.hs
    ... ... @@ -235,6 +235,7 @@ import GHC.Internal.Types hiding (
    235 235
       Sum61#,
    
    236 236
       Sum62#,
    
    237 237
       Sum63#,
    
    238
    +  Sum64#,
    
    238 239
       )
    
    239 240
     import GHC.Internal.Classes hiding (
    
    240 241
       CUnit,
    

  • libraries/ghc-internal/src/GHC/Internal/Exts.hs
    ... ... @@ -338,6 +338,7 @@ import GHC.Internal.Types
    338 338
              Sum61#,
    
    339 339
              Sum62#,
    
    340 340
              Sum63#,
    
    341
    +         Sum64#,
    
    341 342
       )
    
    342 343
     import GHC.Internal.Prim.Ext
    
    343 344
     import GHC.Internal.ArrayArray
    

  • libraries/ghc-internal/src/GHC/Internal/Types.hs
    ... ... @@ -195,6 +195,7 @@ module GHC.Internal.Types (
    195 195
             Sum61#,
    
    196 196
             Sum62#,
    
    197 197
             Sum63#,
    
    198
    +        Sum64#,
    
    198 199
     
    
    199 200
         ) where
    
    200 201
     
    
    ... ... @@ -1467,14 +1468,6 @@ data Tuple64# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1
    1467 1468
       (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
    
    1468 1469
          u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2,l2 #)
    
    1469 1470
     
    
    1470
    -{-
    
    1471
    -Note [Unboxed sum with arity 64]
    
    1472
    -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    1473
    -While tuples are defined up to arity 64, sums can maximally have 63 alternatives.
    
    1474
    -This is due to the Unique layout for unboxed sums, which allots only six bits
    
    1475
    -for encoding the alternative.
    
    1476
    --}
    
    1477
    -
    
    1478 1471
     type Sum2# :: TYPE r1 -> TYPE r2 -> TYPE (SumRep [r1, r2])
    
    1479 1472
     data Sum2# a b =
    
    1480 1473
         (# a | #)
    
    ... ... @@ -3675,3 +3668,70 @@ data Sum63# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f
    3675 3668
       | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i2 | | #)
    
    3676 3669
       | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j2 | #)
    
    3677 3670
       | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k2 #)
    
    3671
    +
    
    3672
    +type Sum64# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 -> TYPE r63 -> TYPE r64 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r64])
    
    3673
    +data Sum64# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 l2 =
    
    3674
    +    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3675
    +  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3676
    +  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3677
    +  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3678
    +  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3679
    +  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3680
    +  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3681
    +  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3682
    +  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3683
    +  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3684
    +  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3685
    +  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3686
    +  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3687
    +  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3688
    +  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3689
    +  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3690
    +  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3691
    +  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3692
    +  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3693
    +  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3694
    +  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3695
    +  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3696
    +  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3697
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3698
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3699
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3700
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3701
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3702
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3703
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3704
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3705
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3706
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3707
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3708
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3709
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3710
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3711
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3712
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3713
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3714
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | | | | | | #)
    
    3715
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | | | | | | #)
    
    3716
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | | | | | | #)
    
    3717
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | | | | | | #)
    
    3718
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | | | | | | #)
    
    3719
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | | | | | | #)
    
    3720
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | | | | | | #)
    
    3721
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | | | | | | #)
    
    3722
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | | | | | | #)
    
    3723
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | | | | | | #)
    
    3724
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | | | | | | #)
    
    3725
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | | | | | | #)
    
    3726
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | | | | | | #)
    
    3727
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | | | | | | #)
    
    3728
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | | | | | | #)
    
    3729
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | | | | | | #)
    
    3730
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | | | | | | #)
    
    3731
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | | | | | | #)
    
    3732
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 | | | | | #)
    
    3733
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h2 | | | | #)
    
    3734
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i2 | | | #)
    
    3735
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j2 | | #)
    
    3736
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k2 | #)
    
    3737
    +  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l2 #)

  • testsuite/tests/ghci/scripts/ListTuplePunsPprNoAbbrevTuple.stdout
    1
    -type Tuple :: forall (n :: GHC.TypeNats.Nat).
    
    2
    -              Data.Tuple.Experimental.TupleArgKind (*) n -> *
    
    3
    -type family Tuple ts = r | r -> n ts where
    
    1
    +type Tuple :: forall (n :: GHC.Internal.TypeNats.Nat).
    
    2
    +              Data.Tuple.Experimental.TupleArgKind n -> *
    
    3
    +type family Tuple ts where
    
    4 4
         Tuple () = Unit
    
    5
    +    Tuple a = a
    
    5 6
         Tuple (a, b) = Tuple2 a b
    
    6 7
         Tuple (a, b, c) = Tuple3 a b c
    
    7 8
         Tuple (a, b, c, d) = Tuple4 a b c d
    

  • testsuite/tests/ghci/scripts/all.T
    ... ... @@ -382,7 +382,7 @@ test('T16468', normal, ghci_script, ['T16468.script'])
    382 382
     test('T23686', normal, ghci_script, ['T23686.script'])
    
    383 383
     test('T13869', extra_files(['T13869a.hs', 'T13869b.hs']), ghci_script, ['T13869.script'])
    
    384 384
     test('ListTuplePunsPpr', normal, ghci_script, ['ListTuplePunsPpr.script'])
    
    385
    -test('ListTuplePunsPprNoAbbrevTuple', [expect_broken(23135), limit_stdout_lines(13)], ghci_script, ['ListTuplePunsPprNoAbbrevTuple.script'])
    
    385
    +test('ListTuplePunsPprNoAbbrevTuple', [limit_stdout_lines(14)], ghci_script, ['ListTuplePunsPprNoAbbrevTuple.script'])
    
    386 386
     test('T24459', normal, ghci_script, ['T24459.script'])
    
    387 387
     test('T24632', normal, ghci_script, ['T24632.script'])
    
    388 388
     
    

  • testsuite/tests/interface-stability/ghc-experimental-exports.stdout The diff for this file was not included because it is too large.
  • testsuite/tests/interface-stability/ghc-experimental-exports.stdout-mingw32 The diff for this file was not included because it is too large.
  • testsuite/tests/interface-stability/ghc-prim-exports.stdout
    ... ... @@ -5373,6 +5373,74 @@ module GHC.Types where
    5373 5373
                      -> TYPE k62
    
    5374 5374
                      -> TYPE (SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62])
    
    5375 5375
       data Sum63# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 = ...
    
    5376
    +  type Sum64# :: forall (k0 :: RuntimeRep) (k1 :: RuntimeRep) (k2 :: RuntimeRep) (k3 :: RuntimeRep) (k4 :: RuntimeRep) (k5 :: RuntimeRep) (k6 :: RuntimeRep) (k7 :: RuntimeRep) (k8 :: RuntimeRep) (k9 :: RuntimeRep) (k10 :: RuntimeRep) (k11 :: RuntimeRep) (k12 :: RuntimeRep) (k13 :: RuntimeRep) (k14 :: RuntimeRep) (k15 :: RuntimeRep) (k16 :: RuntimeRep) (k17 :: RuntimeRep) (k18 :: RuntimeRep) (k19 :: RuntimeRep) (k20 :: RuntimeRep) (k21 :: RuntimeRep) (k22 :: RuntimeRep) (k23 :: RuntimeRep) (k24 :: RuntimeRep) (k25 :: RuntimeRep) (k26 :: RuntimeRep) (k27 :: RuntimeRep) (k28 :: RuntimeRep) (k29 :: RuntimeRep) (k30 :: RuntimeRep) (k31 :: RuntimeRep)
    
    5377
    +                        (k32 :: RuntimeRep) (k33 :: RuntimeRep) (k34 :: RuntimeRep) (k35 :: RuntimeRep) (k36 :: RuntimeRep) (k37 :: RuntimeRep) (k38 :: RuntimeRep) (k39 :: RuntimeRep) (k40 :: RuntimeRep) (k41 :: RuntimeRep) (k42 :: RuntimeRep) (k43 :: RuntimeRep) (k44 :: RuntimeRep) (k45 :: RuntimeRep) (k46 :: RuntimeRep) (k47 :: RuntimeRep) (k48 :: RuntimeRep) (k49 :: RuntimeRep) (k50 :: RuntimeRep) (k51 :: RuntimeRep) (k52 :: RuntimeRep) (k53 :: RuntimeRep) (k54 :: RuntimeRep) (k55 :: RuntimeRep) (k56 :: RuntimeRep) (k57 :: RuntimeRep) (k58 :: RuntimeRep) (k59 :: RuntimeRep) (k60 :: RuntimeRep) (k61 :: RuntimeRep) (k62 :: RuntimeRep) (k63 :: RuntimeRep).
    
    5378
    +                 TYPE k0
    
    5379
    +                 -> TYPE k1
    
    5380
    +                 -> TYPE k2
    
    5381
    +                 -> TYPE k3
    
    5382
    +                 -> TYPE k4
    
    5383
    +                 -> TYPE k5
    
    5384
    +                 -> TYPE k6
    
    5385
    +                 -> TYPE k7
    
    5386
    +                 -> TYPE k8
    
    5387
    +                 -> TYPE k9
    
    5388
    +                 -> TYPE k10
    
    5389
    +                 -> TYPE k11
    
    5390
    +                 -> TYPE k12
    
    5391
    +                 -> TYPE k13
    
    5392
    +                 -> TYPE k14
    
    5393
    +                 -> TYPE k15
    
    5394
    +                 -> TYPE k16
    
    5395
    +                 -> TYPE k17
    
    5396
    +                 -> TYPE k18
    
    5397
    +                 -> TYPE k19
    
    5398
    +                 -> TYPE k20
    
    5399
    +                 -> TYPE k21
    
    5400
    +                 -> TYPE k22
    
    5401
    +                 -> TYPE k23
    
    5402
    +                 -> TYPE k24
    
    5403
    +                 -> TYPE k25
    
    5404
    +                 -> TYPE k26
    
    5405
    +                 -> TYPE k27
    
    5406
    +                 -> TYPE k28
    
    5407
    +                 -> TYPE k29
    
    5408
    +                 -> TYPE k30
    
    5409
    +                 -> TYPE k31
    
    5410
    +                 -> TYPE k32
    
    5411
    +                 -> TYPE k33
    
    5412
    +                 -> TYPE k34
    
    5413
    +                 -> TYPE k35
    
    5414
    +                 -> TYPE k36
    
    5415
    +                 -> TYPE k37
    
    5416
    +                 -> TYPE k38
    
    5417
    +                 -> TYPE k39
    
    5418
    +                 -> TYPE k40
    
    5419
    +                 -> TYPE k41
    
    5420
    +                 -> TYPE k42
    
    5421
    +                 -> TYPE k43
    
    5422
    +                 -> TYPE k44
    
    5423
    +                 -> TYPE k45
    
    5424
    +                 -> TYPE k46
    
    5425
    +                 -> TYPE k47
    
    5426
    +                 -> TYPE k48
    
    5427
    +                 -> TYPE k49
    
    5428
    +                 -> TYPE k50
    
    5429
    +                 -> TYPE k51
    
    5430
    +                 -> TYPE k52
    
    5431
    +                 -> TYPE k53
    
    5432
    +                 -> TYPE k54
    
    5433
    +                 -> TYPE k55
    
    5434
    +                 -> TYPE k56
    
    5435
    +                 -> TYPE k57
    
    5436
    +                 -> TYPE k58
    
    5437
    +                 -> TYPE k59
    
    5438
    +                 -> TYPE k60
    
    5439
    +                 -> TYPE k61
    
    5440
    +                 -> TYPE k62
    
    5441
    +                 -> TYPE k63
    
    5442
    +                 -> TYPE (SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63])
    
    5443
    +  data Sum64# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63 = ...
    
    5376 5444
       type Sum7# :: forall (k0 :: RuntimeRep) (k1 :: RuntimeRep) (k2 :: RuntimeRep) (k3 :: RuntimeRep) (k4 :: RuntimeRep) (k5 :: RuntimeRep) (k6 :: RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE (SumRep [k0, k1, k2, k3, k4, k5, k6])
    
    5377 5445
       data Sum7# a b c d e f g = ...
    
    5378 5446
       type Sum8# :: forall (k0 :: RuntimeRep) (k1 :: RuntimeRep) (k2 :: RuntimeRep) (k3 :: RuntimeRep) (k4 :: RuntimeRep) (k5 :: RuntimeRep) (k6 :: RuntimeRep) (k7 :: RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE (SumRep [k0, k1, k2, k3, k4, k5, k6, k7])
    

  • testsuite/tests/interface-stability/ghc-prim-exports.stdout-mingw32
    ... ... @@ -5376,6 +5376,74 @@ module GHC.Types where
    5376 5376
                      -> TYPE k62
    
    5377 5377
                      -> TYPE (SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62])
    
    5378 5378
       data Sum63# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 = ...
    
    5379
    +  type Sum64# :: forall (k0 :: RuntimeRep) (k1 :: RuntimeRep) (k2 :: RuntimeRep) (k3 :: RuntimeRep) (k4 :: RuntimeRep) (k5 :: RuntimeRep) (k6 :: RuntimeRep) (k7 :: RuntimeRep) (k8 :: RuntimeRep) (k9 :: RuntimeRep) (k10 :: RuntimeRep) (k11 :: RuntimeRep) (k12 :: RuntimeRep) (k13 :: RuntimeRep) (k14 :: RuntimeRep) (k15 :: RuntimeRep) (k16 :: RuntimeRep) (k17 :: RuntimeRep) (k18 :: RuntimeRep) (k19 :: RuntimeRep) (k20 :: RuntimeRep) (k21 :: RuntimeRep) (k22 :: RuntimeRep) (k23 :: RuntimeRep) (k24 :: RuntimeRep) (k25 :: RuntimeRep) (k26 :: RuntimeRep) (k27 :: RuntimeRep) (k28 :: RuntimeRep) (k29 :: RuntimeRep) (k30 :: RuntimeRep) (k31 :: RuntimeRep)
    
    5380
    +                        (k32 :: RuntimeRep) (k33 :: RuntimeRep) (k34 :: RuntimeRep) (k35 :: RuntimeRep) (k36 :: RuntimeRep) (k37 :: RuntimeRep) (k38 :: RuntimeRep) (k39 :: RuntimeRep) (k40 :: RuntimeRep) (k41 :: RuntimeRep) (k42 :: RuntimeRep) (k43 :: RuntimeRep) (k44 :: RuntimeRep) (k45 :: RuntimeRep) (k46 :: RuntimeRep) (k47 :: RuntimeRep) (k48 :: RuntimeRep) (k49 :: RuntimeRep) (k50 :: RuntimeRep) (k51 :: RuntimeRep) (k52 :: RuntimeRep) (k53 :: RuntimeRep) (k54 :: RuntimeRep) (k55 :: RuntimeRep) (k56 :: RuntimeRep) (k57 :: RuntimeRep) (k58 :: RuntimeRep) (k59 :: RuntimeRep) (k60 :: RuntimeRep) (k61 :: RuntimeRep) (k62 :: RuntimeRep) (k63 :: RuntimeRep).
    
    5381
    +                 TYPE k0
    
    5382
    +                 -> TYPE k1
    
    5383
    +                 -> TYPE k2
    
    5384
    +                 -> TYPE k3
    
    5385
    +                 -> TYPE k4
    
    5386
    +                 -> TYPE k5
    
    5387
    +                 -> TYPE k6
    
    5388
    +                 -> TYPE k7
    
    5389
    +                 -> TYPE k8
    
    5390
    +                 -> TYPE k9
    
    5391
    +                 -> TYPE k10
    
    5392
    +                 -> TYPE k11
    
    5393
    +                 -> TYPE k12
    
    5394
    +                 -> TYPE k13
    
    5395
    +                 -> TYPE k14
    
    5396
    +                 -> TYPE k15
    
    5397
    +                 -> TYPE k16
    
    5398
    +                 -> TYPE k17
    
    5399
    +                 -> TYPE k18
    
    5400
    +                 -> TYPE k19
    
    5401
    +                 -> TYPE k20
    
    5402
    +                 -> TYPE k21
    
    5403
    +                 -> TYPE k22
    
    5404
    +                 -> TYPE k23
    
    5405
    +                 -> TYPE k24
    
    5406
    +                 -> TYPE k25
    
    5407
    +                 -> TYPE k26
    
    5408
    +                 -> TYPE k27
    
    5409
    +                 -> TYPE k28
    
    5410
    +                 -> TYPE k29
    
    5411
    +                 -> TYPE k30
    
    5412
    +                 -> TYPE k31
    
    5413
    +                 -> TYPE k32
    
    5414
    +                 -> TYPE k33
    
    5415
    +                 -> TYPE k34
    
    5416
    +                 -> TYPE k35
    
    5417
    +                 -> TYPE k36
    
    5418
    +                 -> TYPE k37
    
    5419
    +                 -> TYPE k38
    
    5420
    +                 -> TYPE k39
    
    5421
    +                 -> TYPE k40
    
    5422
    +                 -> TYPE k41
    
    5423
    +                 -> TYPE k42
    
    5424
    +                 -> TYPE k43
    
    5425
    +                 -> TYPE k44
    
    5426
    +                 -> TYPE k45
    
    5427
    +                 -> TYPE k46
    
    5428
    +                 -> TYPE k47
    
    5429
    +                 -> TYPE k48
    
    5430
    +                 -> TYPE k49
    
    5431
    +                 -> TYPE k50
    
    5432
    +                 -> TYPE k51
    
    5433
    +                 -> TYPE k52
    
    5434
    +                 -> TYPE k53
    
    5435
    +                 -> TYPE k54
    
    5436
    +                 -> TYPE k55
    
    5437
    +                 -> TYPE k56
    
    5438
    +                 -> TYPE k57
    
    5439
    +                 -> TYPE k58
    
    5440
    +                 -> TYPE k59
    
    5441
    +                 -> TYPE k60
    
    5442
    +                 -> TYPE k61
    
    5443
    +                 -> TYPE k62
    
    5444
    +                 -> TYPE k63
    
    5445
    +                 -> TYPE (SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63])
    
    5446
    +  data Sum64# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63 = ...
    
    5379 5447
       type Sum7# :: forall (k0 :: RuntimeRep) (k1 :: RuntimeRep) (k2 :: RuntimeRep) (k3 :: RuntimeRep) (k4 :: RuntimeRep) (k5 :: RuntimeRep) (k6 :: RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE (SumRep [k0, k1, k2, k3, k4, k5, k6])
    
    5380 5448
       data Sum7# a b c d e f g = ...
    
    5381 5449
       type Sum8# :: forall (k0 :: RuntimeRep) (k1 :: RuntimeRep) (k2 :: RuntimeRep) (k3 :: RuntimeRep) (k4 :: RuntimeRep) (k5 :: RuntimeRep) (k6 :: RuntimeRep) (k7 :: RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE (SumRep [k0, k1, k2, k3, k4, k5, k6, k7])
    

  • testsuite/tests/parser/should_compile/ListTuplePunsSuccess1.hs
    ... ... @@ -3,9 +3,9 @@
    3 3
     module ListTuplePunsSuccess1 where
    
    4 4
     
    
    5 5
     import Data.Kind (Type)
    
    6
    --- import Data.Tuple.Experimental (Tuple, Tuple#)
    
    7
    -import GHC.Tuple (Unit, Tuple2)
    
    8
    -import GHC.Types (List)
    
    6
    +import Data.List (List)
    
    7
    +import Data.Tuple.Experimental (Unit, Tuple2, Tuple, Constraints, Tuple#)
    
    8
    +import GHC.Exts (TYPE, RuntimeRep(IntRep))
    
    9 9
     
    
    10 10
     type family F (a :: Tuple2 Type Type) :: Type where
    
    11 11
       F (a, _) = a
    
    ... ... @@ -34,10 +34,14 @@ type Z1 = H [Int, Double]
    34 34
     z1 :: Z1
    
    35 35
     z1 = (5 :: Int)
    
    36 36
     
    
    37
    --- swap :: Tuple (a, b) -> Tuple (b, a)
    
    38
    --- swap (x, y) = (y, x)
    
    37
    +swap :: Tuple (a, b) -> Tuple (b, a)
    
    38
    +swap (x, y) = (y, x)
    
    39 39
     
    
    40
    --- unboxedSoloFam :: Int
    
    41
    --- unboxedSoloFam =
    
    42
    ---   case (# 1 #) :: Tuple# Int of
    
    43
    ---     _ -> 0
    40
    +swap_mono :: Tuple (Int, Bool) -> Tuple (Bool, Int)
    
    41
    +swap_mono (x, y) = (y, x)
    
    42
    +
    
    43
    +swap_inc :: Constraints (Num a, Num b) => Tuple (a, b) -> Tuple (b, a)
    
    44
    +swap_inc (x, y) = (y + 1, x + 1)
    
    45
    +
    
    46
    +swap# :: forall (a :: TYPE IntRep) (b :: Type). Tuple# (a, b) -> Tuple# (b, a)
    
    47
    +swap# (# x, y #) = (# y, x #)

  • testsuite/tests/parser/should_compile/all.T
    ... ... @@ -198,8 +198,8 @@ test('T20718b', normal, compile, ['-dsuppress-uniques -ddump-parsed-ast -dkeep-
    198 198
     test('T21589', normal, compile, [''])
    
    199 199
     test('T19372consym', normal, compile, [''])
    
    200 200
     test('ListTuplePunsSuccess1', extra_files(['ListTuplePunsSuccess1.hs']), ghci_script, ['ListTuplePunsSuccess1.script'])
    
    201
    -test('ListTuplePunsFamiliesCompat', expect_broken(23135), compile, [''])
    
    202
    -test('ListTuplePunsFamilies', [expect_broken(23135), extra_files(['ListTuplePunsFamilies.hs'])], ghci_script, ['ListTuplePunsFamilies.script'])
    
    201
    +test('ListTuplePunsFamiliesCompat', normal, compile, [''])
    
    202
    +test('ListTuplePunsFamilies', [extra_files(['ListTuplePunsFamilies.hs'])], ghci_script, ['ListTuplePunsFamilies.script'])
    
    203 203
     
    
    204 204
     
    
    205 205
     test('T22155', normal, compile, ['-dsuppress-uniques -ddump-simpl -dsuppress-all -dno-typeable-binds'])
    

  • testsuite/tests/parser/should_fail/ListTuplePunsFail6.hs
    1
    +{-# language DataKinds, MagicHash, UnboxedTuples #-}
    
    2
    +
    
    3
    +module ListTuplePunsFail6 where
    
    4
    +
    
    5
    +import Data.Tuple.Experimental (Tuple#)
    
    6
    +
    
    7
    +unboxedSoloFam :: Int
    
    8
    +unboxedSoloFam =
    
    9
    +  case (# 1 #) :: Tuple# Int of
    
    10
    +    _ -> 0

  • testsuite/tests/parser/should_fail/ListTuplePunsFail6.stderr
    1
    +ListTuplePunsFail6.hs:9:8: error: [GHC-64725]
    
    2
    +    • Tuple# does not work for 1-tuples; use Solo#.
    
    3
    +    • In the expression: (# 1 #) :: Tuple# Int
    
    4
    +      In the expression: case (# 1 #) :: Tuple# Int of _ -> 0
    
    5
    +      In an equation for ‘unboxedSoloFam’:
    
    6
    +          unboxedSoloFam = case (# 1 #) :: Tuple# Int of _ -> 0
    
    7
    +

  • testsuite/tests/parser/should_fail/all.T
    ... ... @@ -232,6 +232,7 @@ test('ListTuplePunsFail2', extra_files(['ListTuplePunsFail2.hs']), ghci_script,
    232 232
     test('ListTuplePunsFail3', extra_files(['ListTuplePunsFail3.hs']), ghci_script, ['ListTuplePunsFail3.script'])
    
    233 233
     test('ListTuplePunsFail4', extra_files(['ListTuplePunsFail4.hs']), ghci_script, ['ListTuplePunsFail4.script'])
    
    234 234
     test('ListTuplePunsFail5', extra_files(['ListTuplePunsFail5.hs']), ghci_script, ['ListTuplePunsFail5.script'])
    
    235
    +test('ListTuplePunsFail6', normal, compile_fail, [''])
    
    235 236
     test('T17879a', normal, compile_fail, [''])
    
    236 237
     test('T17879b', normal, compile_fail, [''])
    
    237 238
     test('Or1', normal, compile_fail, [''])
    

  • testsuite/tests/parser/should_run/ListTuplePunsConstraints.hs
    ... ... @@ -2,17 +2,16 @@
    2 2
     
    
    3 3
     module ListTuplePunsConstraints where
    
    4 4
     
    
    5
    --- import Data.Tuple.Experimental (Constraints)
    
    6
    -import GHC.Classes (CTuple2)
    
    5
    +import Data.Tuple.Experimental (CTuple2, Constraints)
    
    7 6
     
    
    8
    --- type C1 m = Constraints (Monad m, Monad m)
    
    7
    +type C1 m = Constraints (Monad m, Monad m)
    
    9 8
     type C2 m = CTuple2 (Monad m) (Monad m)
    
    10 9
     
    
    11 10
     f ::
    
    12 11
       Monad m =>
    
    13
    -  -- C1 m =>
    
    12
    +  C1 m =>
    
    14 13
       C2 m =>
    
    15 14
       CTuple2 (Monad m) (Monad m) =>
    
    16
    -  -- (Monad m, Constraints (Monad m, Monad m)) =>
    
    15
    +  (Monad m, Constraints (Monad m, Monad m)) =>
    
    17 16
       m Int
    
    18 17
     f = pure 5

  • testsuite/tests/profiling/should_run/callstack001.stdout
    1
    -["GHC.Internal.TopHandler.runMainIO1 (<no location info>)","Main.main (callstack001.hs:17:8-21)","Main.mapM (callstack001.hs:10:13-17)","Main.mapM.go (callstack001.hs:(12,21)-(15,25))","Main.mapM.go (callstack001.hs:13:11-19)","Main.mapM.go (callstack001.hs:13:17-19)","Main.f (callstack001.hs:7:7-49)","Main.f (callstack001.hs:7:10-35)","GHC.Internal.Base.>>= (libraries/ghc-internal/src/GHC/Internal/Base.hs:1347:5-55)","GHC.Internal.Base.$fMonadIO1 (<no location info>)","GHC.Internal.Stack.CCS.currentCallStack (libraries/ghc-internal/src/GHC/Internal/Stack/CCS.hsc:129:1-16)","GHC.Internal.Stack.CCS.currentCallStack1 (<no location info>)"]
    
    2
    -["GHC.Internal.TopHandler.runMainIO1 (<no location info>)","Main.main (callstack001.hs:17:8-21)","Main.mapM (callstack001.hs:10:13-17)","Main.mapM.go (callstack001.hs:(12,21)-(15,25))","Main.mapM.go (callstack001.hs:13:11-19)","GHC.Internal.Base.>>= (libraries/ghc-internal/src/GHC/Internal/Base.hs:1347:5-55)","GHC.Internal.Base.$fMonadIO1 (<no location info>)","GHC.Internal.Stack.CCS.currentCallStack (libraries/ghc-internal/src/GHC/Internal/Stack/CCS.hsc:129:1-16)","GHC.Internal.Stack.CCS.currentCallStack1 (<no location info>)"]
    \ No newline at end of file
    1
    +["GHC.Internal.TopHandler.runMainIO1 (<no location info>)","Main.main (callstack001.hs:17:8-21)","Main.mapM (callstack001.hs:10:13-17)","Main.mapM.go (callstack001.hs:(12,21)-(15,25))","Main.mapM.go (callstack001.hs:13:11-19)","Main.mapM.go (callstack001.hs:13:17-19)","Main.f (callstack001.hs:7:7-49)","Main.f (callstack001.hs:7:10-35)","GHC.Internal.Base.>>= (libraries/ghc-internal/src/GHC/Internal/Base.hs:1348:5-55)","GHC.Internal.Base.$fMonadIO1 (<no location info>)","GHC.Internal.Stack.CCS.currentCallStack (libraries/ghc-internal/src/GHC/Internal/Stack/CCS.hsc:129:1-16)","GHC.Internal.Stack.CCS.currentCallStack1 (<no location info>)"]
    
    2
    +["GHC.Internal.TopHandler.runMainIO1 (<no location info>)","Main.main (callstack001.hs:17:8-21)","Main.mapM (callstack001.hs:10:13-17)","Main.mapM.go (callstack001.hs:(12,21)-(15,25))","Main.mapM.go (callstack001.hs:13:11-19)","GHC.Internal.Base.>>= (libraries/ghc-internal/src/GHC/Internal/Base.hs:1348:5-55)","GHC.Internal.Base.$fMonadIO1 (<no location info>)","GHC.Internal.Stack.CCS.currentCallStack (libraries/ghc-internal/src/GHC/Internal/Stack/CCS.hsc:129:1-16)","GHC.Internal.Stack.CCS.currentCallStack1 (<no location info>)"]

  • testsuite/tests/typecheck/should_compile/T23135.hs
    1
    +{-# LANGUAGE DataKinds, TypeFamilies, TypeFamilyDependencies #-}
    
    2
    +module T23135 where
    
    3
    +
    
    4
    +import Data.Kind
    
    5
    +import GHC.TypeLits
    
    6
    +
    
    7
    +data Tuple2 x y = MkTuple2 x y
    
    8
    +
    
    9
    +type TupleArgKind :: Nat -> Type
    
    10
    +type family TupleArgKind n = r | r -> n where
    
    11
    +  TupleArgKind 2 = Tuple2 Type Type
    
    12
    +
    
    13
    +type Tuple :: forall (n :: Nat). TupleArgKind n -> Type
    
    14
    +type family Tuple ts = r | r -> ts where
    
    15
    +  Tuple (MkTuple2 a b) = Tuple2 a b
    
    16
    +
    
    17
    +-- works
    
    18
    +f :: Tuple (MkTuple2 a b) -> ()
    
    19
    +f (MkTuple2 _ _) = ()
    
    20
    +
    
    21
    +-- works (failed before the fix)
    
    22
    +g :: Tuple (MkTuple2 a b) -> ()
    
    23
    +g x = ()
    
    24
    +
    
    25
    +-- works
    
    26
    +h :: Tuple @2 (MkTuple2 a b) -> ()
    
    27
    +h x = ()
    
    28
    +

  • testsuite/tests/typecheck/should_compile/all.T
    ... ... @@ -966,3 +966,5 @@ test('T26737', normal, compile, [''])
    966 966
     test('T26805a', normal, compile, [''])
    
    967 967
     test('T24464', normal, compile, [''])
    
    968 968
     test('ExpansionQLIm', normal, compile, [''])
    
    969
    +test('T23135', normal, compile, [''])
    
    970
    +