packages feed

hpqtypes 1.5.3.0 → 1.6.0.0

raw patch · 17 files changed

+549/−517 lines, 17 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

- Database.PostgreSQL.PQTypes.Format: instance (GHC.Classes.Eq b, GHC.Classes.Eq a) => GHC.Classes.Eq (a Database.PostgreSQL.PQTypes.Format.:*: b)
- Database.PostgreSQL.PQTypes.Format: instance (GHC.Classes.Ord b, GHC.Classes.Ord a) => GHC.Classes.Ord (a Database.PostgreSQL.PQTypes.Format.:*: b)
- Database.PostgreSQL.PQTypes.Format: instance (GHC.Show.Show b, GHC.Show.Show a) => GHC.Show.Show (a Database.PostgreSQL.PQTypes.Format.:*: b)
- Database.PostgreSQL.PQTypes.Interval: instance Data.Semigroup.Semigroup Database.PostgreSQL.PQTypes.Interval.Interval
- Database.PostgreSQL.PQTypes.SQL: instance Data.Semigroup.Semigroup Database.PostgreSQL.PQTypes.SQL.SQL
- Database.PostgreSQL.PQTypes.SQL.Raw: instance Data.Semigroup.Semigroup (Database.PostgreSQL.PQTypes.SQL.Raw.RawSQL ())
+ Database.PostgreSQL.PQTypes.Format: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (a Database.PostgreSQL.PQTypes.Format.:*: b)
+ Database.PostgreSQL.PQTypes.Format: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (a Database.PostgreSQL.PQTypes.Format.:*: b)
+ Database.PostgreSQL.PQTypes.Format: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (a Database.PostgreSQL.PQTypes.Format.:*: b)
+ Database.PostgreSQL.PQTypes.Format: pqFormat0P :: forall t. PQFormat t => Proxy t -> ByteString
+ Database.PostgreSQL.PQTypes.Format: pqFormatP :: forall t. PQFormat t => Proxy t -> ByteString
+ Database.PostgreSQL.PQTypes.Format: pqVariablesP :: forall t. PQFormat t => Proxy t -> Int
+ Database.PostgreSQL.PQTypes.Interval: instance GHC.Base.Semigroup Database.PostgreSQL.PQTypes.Interval.Interval
+ Database.PostgreSQL.PQTypes.SQL: instance GHC.Base.Semigroup Database.PostgreSQL.PQTypes.SQL.SQL
+ Database.PostgreSQL.PQTypes.SQL.Raw: instance GHC.Base.Semigroup (Database.PostgreSQL.PQTypes.SQL.Raw.RawSQL ())
- Database.PostgreSQL.PQTypes: ConnectionSource :: (forall m. MkConstraint m cs => ConnectionSourceM m) -> ConnectionSource
+ Database.PostgreSQL.PQTypes: ConnectionSource :: forall m. MkConstraint m cs => ConnectionSourceM m -> ConnectionSource
- Database.PostgreSQL.PQTypes.Format: pqFormat :: PQFormat t => t -> ByteString
+ Database.PostgreSQL.PQTypes.Format: pqFormat :: PQFormat t => ByteString
- Database.PostgreSQL.PQTypes.Format: pqFormat0 :: PQFormat t => t -> ByteString
+ Database.PostgreSQL.PQTypes.Format: pqFormat0 :: PQFormat t => ByteString
- Database.PostgreSQL.PQTypes.Format: pqVariables :: PQFormat t => t -> Int
+ Database.PostgreSQL.PQTypes.Format: pqVariables :: PQFormat t => Int
- Database.PostgreSQL.PQTypes.Internal.Connection: ConnectionSource :: (forall m. MkConstraint m cs => ConnectionSourceM m) -> ConnectionSource
+ Database.PostgreSQL.PQTypes.Internal.Connection: ConnectionSource :: forall m. MkConstraint m cs => ConnectionSourceM m -> ConnectionSource
- Database.PostgreSQL.PQTypes.Internal.Connection: ConnectionSourceM :: (forall r. (Connection -> m r) -> m r) -> ConnectionSourceM m
+ Database.PostgreSQL.PQTypes.Internal.Connection: ConnectionSourceM :: forall r. (Connection -> m r) -> m r -> ConnectionSourceM m

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@+# hpqtypes-1.6.0.0 (2018-07-11)+* Convert the PQFormat class to use TypeApplications instead of+  an 'undefined :: t' argument.+* Drop support for GHC < 8.+ # hpqtypes-1.5.3.0 (2018-06-04) * add INLINE/INLINEABLE pragmas for call site specialization * remove -O2 -funbox-strict-fields from ghc-options
examples/Catalog.hs view
@@ -43,7 +43,7 @@ type instance CompositeRow Book = (Int64, String, Int32)  instance PQFormat Book where-  pqFormat _ = "%book_"+  pqFormat = "%book_"  instance CompositeFromSQL Book where   toComposite (bid, name, year) = Book {
hpqtypes.cabal view
@@ -1,5 +1,5 @@ name:                hpqtypes-version:             1.5.3.0+version:             1.6.0.0 synopsis:            Haskell bindings to libpqtypes  description:         Efficient and easy-to-use bindings to (slightly modified)@@ -36,7 +36,7 @@ category:            Database build-type:          Custom cabal-version:       1.18-tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.2, GHC == 8.4.1+tested-with:         GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3   extra-source-files: README.md@@ -79,7 +79,7 @@ source-repository this   type:     git   location: https://github.com/scrive/hpqtypes.git-  tag:      1.5.3.0+  tag:      1.6.0.0  library   exposed-modules:     Data.Monoid.Utils
src/Database/PostgreSQL/PQTypes/Array.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TypeApplications #-} module Database.PostgreSQL.PQTypes.Array (     -- * Array1     Array1(..)@@ -47,7 +48,7 @@ unArray1 (Array1 a) = a  instance PQFormat t => PQFormat (Array1 t) where-  pqFormat _ = pqFormat (undefined::t) `BS.append` BS.pack "[]"+  pqFormat = pqFormat @t `BS.append` BS.pack "[]"  instance FromSQL t => FromSQL (Array1 t) where   type PQBase (Array1 t) = PGarray@@ -79,7 +80,7 @@ unCompositeArray1 (CompositeArray1 a) = a  instance PQFormat t => PQFormat (CompositeArray1 t) where-  pqFormat _ = pqFormat (undefined::Array1 t)+  pqFormat = pqFormat @(Array1 t)  instance CompositeFromSQL t => FromSQL (CompositeArray1 t) where   type PQBase (CompositeArray1 t) = PGarray@@ -109,7 +110,7 @@           -- along with its format and puts it into inner 'PGparam'.           -> IO r putArray1 arr param conv putItem = do-  pqFormat0 (undefined::t) `BS.unsafeUseAsCString` (forM_ arr . putItem)+  pqFormat0 @t `BS.unsafeUseAsCString` (forM_ arr . putItem)   putAsPtr (PGarray {     pgArrayNDims = 0   , pgArrayLBound = V.empty@@ -135,7 +136,7 @@       }     else do       size <- c_PQntuples pgArrayRes-      alloca $ \err -> alloca $ \ptr -> pqFormat0 (undefined::t)+      alloca $ \err -> alloca $ \ptr -> pqFormat0 @t         `BS.unsafeUseAsCString` loop [] (size - 1) err ptr   where     loop :: [t] -> CInt -> Ptr PGerror -> Ptr a -> CString -> IO array@@ -156,7 +157,7 @@ unArray2 (Array2 a) = a  instance PQFormat t => PQFormat (Array2 t) where-  pqFormat _ = pqFormat (undefined::Array1 t)+  pqFormat = pqFormat @(Array1 t)  instance FromSQL t => FromSQL (Array2 t) where   type PQBase (Array2 t) = PGarray@@ -188,7 +189,7 @@ unCompositeArray2 (CompositeArray2 a) = a  instance PQFormat t => PQFormat (CompositeArray2 t) where-  pqFormat _ = pqFormat (undefined::Array2 t)+  pqFormat = pqFormat @(Array2 t)  instance CompositeFromSQL t => FromSQL (CompositeArray2 t) where   type PQBase (CompositeArray2 t) = PGarray@@ -218,7 +219,7 @@           -- along with its format and puts it into inner 'PGparam'.           -> IO r putArray2 arr param conv putItem = do-  dims <- pqFormat0 (undefined::t) `BS.unsafeUseAsCString` loop arr 0 0+  dims <- pqFormat0 @t `BS.unsafeUseAsCString` loop arr 0 0   putAsPtr (PGarray {     pgArrayNDims = 2   , pgArrayLBound = V.fromList [1, 1]@@ -261,7 +262,7 @@     else do       let dim2 = pgArrayDims V.! 1       size <- c_PQntuples pgArrayRes-      alloca $ \ptr -> alloca $ \err -> pqFormat0 (undefined::t)+      alloca $ \ptr -> alloca $ \err -> pqFormat0 @t         `BS.unsafeUseAsCString` loop [] dim2 size err ptr   where     loop :: [[t]] -> CInt -> CInt -> Ptr PGerror -> Ptr a -> CString -> IO array
src/Database/PostgreSQL/PQTypes/Composite.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TypeApplications #-} module Database.PostgreSQL.PQTypes.Composite (     Composite(..)   , unComposite@@ -49,7 +50,7 @@   fromComposite :: t -> CompositeRow t  instance PQFormat t => PQFormat (Composite t) where-  pqFormat = const $ pqFormat (undefined::t)+  pqFormat = pqFormat @t  instance CompositeFromSQL t => FromSQL (Composite t) where   type PQBase (Composite t) = Ptr PGresult
src/Database/PostgreSQL/PQTypes/Format.hs view
@@ -1,10 +1,16 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE TypeApplications    #-} module Database.PostgreSQL.PQTypes.Format (     PQFormat(..)+  , pqFormatP+  , pqFormat0P+  , pqVariablesP   , (:*:)(..)   ) where  import Data.Functor.Identity import Data.Int+import Data.Proxy import Data.Time import Data.Typeable import Data.Word@@ -14,27 +20,36 @@ import qualified Data.Text as T import qualified Data.Text.Lazy as TL -u :: a-u = undefined- ---------------------------------------- +-- | Methods in this class are supposed to be used with the+-- @TypeApplications@ extension. class PQFormat t where-  -- | Map type to its libpqtypes format. Note that it should-  -- ignore its argument so that passing 'undefined' is safe.-  pqFormat :: t -> BS.ByteString+  -- | Map a type to its libpqtypes format.+  pqFormat :: BS.ByteString    -- | Map type to its null-terminated libpqtypes format, so   -- it can safely be used by 'unsafeUseAsCString'. Also, for   -- a specific type it becomes a top level CAF, therefore it   -- will be computed by GHC at most once.-  pqFormat0 :: t -> BS.ByteString-  pqFormat0 = const $ pqFormat (u::t) `BS.snoc` '\0'+  pqFormat0 :: BS.ByteString+  pqFormat0 = pqFormat @t `BS.snoc` '\0'    -- | Map type to number of type formats it contains.-  pqVariables :: t -> Int-  pqVariables = const 1+  pqVariables :: Int+  pqVariables = 1 +-- Helpers that are parametrised by a 'Proxy t' instead of 't'.++pqFormatP :: forall t . PQFormat t => Proxy t -> BS.ByteString+pqFormatP    _ = pqFormat @t++pqFormat0P :: forall t . PQFormat t => Proxy t -> BS.ByteString+pqFormat0P   _ = pqFormat0 @t++pqVariablesP :: forall t . PQFormat t => Proxy t -> Int+pqVariablesP _ = pqVariables @t+ -- CARTESIAN PRODUCT  -- | Cartesian product of rows.@@ -42,287 +57,287 @@   deriving (Eq, Ord, Show, Typeable)  instance (PQFormat t1, PQFormat t2) => PQFormat (t1 :*: t2) where-  pqFormat = const $ pqFormat (u::t1) `BS.append` pqFormat (u::t2)-  pqVariables = const $ pqVariables (u::t1) + pqVariables (u::t2)+  pqFormat    = pqFormat @t1 `BS.append` pqFormat @t2+  pqVariables = pqVariables @t1 + pqVariables @t2  -- NULLables  instance PQFormat t => PQFormat (Maybe t) where-  pqFormat = const $ pqFormat (u::t)-  pqVariables = const $ pqVariables (u::t)+  pqFormat    = pqFormat @t+  pqVariables = pqVariables @t  -- NUMERICS  instance PQFormat Int16 where-  pqFormat = const $ BS.pack "%int2"+  pqFormat = BS.pack "%int2"  instance PQFormat Int32 where-  pqFormat = const $ BS.pack "%int4"+  pqFormat = BS.pack "%int4"  instance PQFormat Int64 where-  pqFormat = const $ BS.pack "%int8"+  pqFormat = BS.pack "%int8"  instance PQFormat Int where-  pqFormat = const $ BS.pack "%int8"+  pqFormat = BS.pack "%int8"  instance PQFormat Float where-  pqFormat = const $ BS.pack "%float4"+  pqFormat = BS.pack "%float4"  instance PQFormat Double where-  pqFormat = const $ BS.pack "%float8"+  pqFormat = BS.pack "%float8"  -- CHAR  instance PQFormat Char where-  pqFormat = const $ BS.pack "%char"+  pqFormat = BS.pack "%char"  instance PQFormat Word8 where-  pqFormat = const $ BS.pack "%char"+  pqFormat = BS.pack "%char"  -- VARIABLE-LENGTH CHARACTER TYPES  instance PQFormat String where-  pqFormat = const $ BS.pack "%btext"+  pqFormat = BS.pack "%btext"  instance PQFormat T.Text where-  pqFormat = const $ BS.pack "%btext"+  pqFormat = BS.pack "%btext"  instance PQFormat TL.Text where-  pqFormat = const $ BS.pack "%btext"+  pqFormat = BS.pack "%btext"  -- BYTEA  instance PQFormat BS.ByteString where-  pqFormat = const $ BS.pack "%bytea"+  pqFormat = BS.pack "%bytea"  instance PQFormat BSL.ByteString where-  pqFormat = const $ BS.pack "%bytea"+  pqFormat = BS.pack "%bytea"  -- DATE  instance PQFormat Day where-  pqFormat = const $ BS.pack "%date"+  pqFormat = BS.pack "%date"  -- TIME  instance PQFormat TimeOfDay where-  pqFormat = const $ BS.pack "%time"+  pqFormat = BS.pack "%time"  -- TIMESTAMP  instance PQFormat LocalTime where-  pqFormat = const $ BS.pack "%timestamp"+  pqFormat = BS.pack "%timestamp"  -- TIMESTAMPTZ  instance PQFormat UTCTime where-  pqFormat = const $ BS.pack "%timestamptz"+  pqFormat = BS.pack "%timestamptz"  instance PQFormat ZonedTime where-  pqFormat = const $ BS.pack "%timestamptz"+  pqFormat = BS.pack "%timestamptz"  -- BOOL  instance PQFormat Bool where-  pqFormat = const $ BS.pack "%bool"+  pqFormat = BS.pack "%bool"  -- TUPLES  instance PQFormat () where-  pqFormat = const $ BS.empty-  pqVariables = const 0+  pqFormat = BS.empty+  pqVariables = 0  instance (     PQFormat t   ) => PQFormat (Identity t) where-    pqFormat = const $ pqFormat (u::t)-    pqVariables = const 1+    pqFormat = pqFormat @t+    pqVariables = 1  instance (     PQFormat t1, PQFormat t2   ) => PQFormat (t1, t2) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2       ]-    pqVariables = const 2+    pqVariables = 2  instance (     PQFormat t1, PQFormat t2, PQFormat t3   ) => PQFormat (t1, t2, t3) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3       ]-    pqVariables = const 3+    pqVariables = 3  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4   ) => PQFormat (t1, t2, t3, t4) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4       ]-    pqVariables = const 4+    pqVariables = 4  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5   ) => PQFormat (t1, t2, t3, t4, t5) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5       ]-    pqVariables = const 5+    pqVariables = 5  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   ) => PQFormat (t1, t2, t3, t4, t5, t6) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6       ]-    pqVariables = const 6+    pqVariables = 6  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7       ]-    pqVariables = const 7+    pqVariables = 7  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8       ]-    pqVariables = const 8+    pqVariables = 8  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8, PQFormat t9   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9       ]-    pqVariables = const 9+    pqVariables = 9  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8, PQFormat t9, PQFormat t10   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10       ]-    pqVariables = const 10+    pqVariables = 10  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8, PQFormat t9, PQFormat t10, PQFormat t11   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11       ]-    pqVariables = const 11+    pqVariables = 11  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8, PQFormat t9, PQFormat t10, PQFormat t11, PQFormat t12   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12       ]-    pqVariables = const 12+    pqVariables = 12  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8, PQFormat t9, PQFormat t10, PQFormat t11, PQFormat t12   , PQFormat t13   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13       ]-    pqVariables = const 13+    pqVariables = 13  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8, PQFormat t9, PQFormat t10, PQFormat t11, PQFormat t12   , PQFormat t13, PQFormat t14   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14       ]-    pqVariables = const 14+    pqVariables = 14  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8, PQFormat t9, PQFormat t10, PQFormat t11, PQFormat t12   , PQFormat t13, PQFormat t14, PQFormat t15   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15       ]-    pqVariables = const 15+    pqVariables = 15  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8, PQFormat t9, PQFormat t10, PQFormat t11, PQFormat t12   , PQFormat t13, PQFormat t14, PQFormat t15, PQFormat t16   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16       ]-    pqVariables = const 16+    pqVariables = 16  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8, PQFormat t9, PQFormat t10, PQFormat t11, PQFormat t12   , PQFormat t13, PQFormat t14, PQFormat t15, PQFormat t16, PQFormat t17   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17       ]-    pqVariables = const 17+    pqVariables = 17  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6   , PQFormat t7, PQFormat t8, PQFormat t9, PQFormat t10, PQFormat t11, PQFormat t12   , PQFormat t13, PQFormat t14, PQFormat t15, PQFormat t16, PQFormat t17, PQFormat t18   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18       ]-    pqVariables = const 18+    pqVariables = 18  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -330,14 +345,14 @@   , PQFormat t13, PQFormat t14, PQFormat t15, PQFormat t16, PQFormat t17, PQFormat t18   , PQFormat t19   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19       ]-    pqVariables = const 19+    pqVariables = 19  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -345,14 +360,14 @@   , PQFormat t13, PQFormat t14, PQFormat t15, PQFormat t16, PQFormat t17, PQFormat t18   , PQFormat t19, PQFormat t20   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20       ]-    pqVariables = const 20+    pqVariables = 20  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -360,15 +375,15 @@   , PQFormat t13, PQFormat t14, PQFormat t15, PQFormat t16, PQFormat t17, PQFormat t18   , PQFormat t19, PQFormat t20, PQFormat t21   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21       ]-    pqVariables = const 21+    pqVariables = 21  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -376,15 +391,15 @@   , PQFormat t13, PQFormat t14, PQFormat t15, PQFormat t16, PQFormat t17, PQFormat t18   , PQFormat t19, PQFormat t20, PQFormat t21, PQFormat t22   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22       ]-    pqVariables = const 22+    pqVariables = 22  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -392,15 +407,15 @@   , PQFormat t13, PQFormat t14, PQFormat t15, PQFormat t16, PQFormat t17, PQFormat t18   , PQFormat t19, PQFormat t20, PQFormat t21, PQFormat t22, PQFormat t23   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23       ]-    pqVariables = const 23+    pqVariables = 23  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -408,15 +423,15 @@   , PQFormat t13, PQFormat t14, PQFormat t15, PQFormat t16, PQFormat t17, PQFormat t18   , PQFormat t19, PQFormat t20, PQFormat t21, PQFormat t22, PQFormat t23, PQFormat t24   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24       ]-    pqVariables = const 24+    pqVariables = 24  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -425,16 +440,16 @@   , PQFormat t19, PQFormat t20, PQFormat t21, PQFormat t22, PQFormat t23, PQFormat t24   , PQFormat t25   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25       ]-    pqVariables = const 25+    pqVariables = 25  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -443,16 +458,16 @@   , PQFormat t19, PQFormat t20, PQFormat t21, PQFormat t22, PQFormat t23, PQFormat t24   , PQFormat t25, PQFormat t26   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26       ]-    pqVariables = const 26+    pqVariables = 26  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -461,16 +476,16 @@   , PQFormat t19, PQFormat t20, PQFormat t21, PQFormat t22, PQFormat t23, PQFormat t24   , PQFormat t25, PQFormat t26, PQFormat t27   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27       ]-    pqVariables = const 27+    pqVariables = 27  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -479,16 +494,16 @@   , PQFormat t19, PQFormat t20, PQFormat t21, PQFormat t22, PQFormat t23, PQFormat t24   , PQFormat t25, PQFormat t26, PQFormat t27, PQFormat t28   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28       ]-    pqVariables = const 28+    pqVariables = 28  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -497,17 +512,17 @@   , PQFormat t19, PQFormat t20, PQFormat t21, PQFormat t22, PQFormat t23, PQFormat t24   , PQFormat t25, PQFormat t26, PQFormat t27, PQFormat t28, PQFormat t29   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29       ]-    pqVariables = const 29+    pqVariables = 29  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -516,17 +531,17 @@   , PQFormat t19, PQFormat t20, PQFormat t21, PQFormat t22, PQFormat t23, PQFormat t24   , PQFormat t25, PQFormat t26, PQFormat t27, PQFormat t28, PQFormat t29, PQFormat t30   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30       ]-    pqVariables = const 30+    pqVariables = 30  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -536,17 +551,17 @@   , PQFormat t25, PQFormat t26, PQFormat t27, PQFormat t28, PQFormat t29, PQFormat t30   , PQFormat t31   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31       ]-    pqVariables = const 31+    pqVariables = 31  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -556,17 +571,17 @@   , PQFormat t25, PQFormat t26, PQFormat t27, PQFormat t28, PQFormat t29, PQFormat t30   , PQFormat t31, PQFormat t32   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32       ]-    pqVariables = const 32+    pqVariables = 32  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -576,18 +591,18 @@   , PQFormat t25, PQFormat t26, PQFormat t27, PQFormat t28, PQFormat t29, PQFormat t30   , PQFormat t31, PQFormat t32, PQFormat t33   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33       ]-    pqVariables = const 33+    pqVariables = 33  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -597,18 +612,18 @@   , PQFormat t25, PQFormat t26, PQFormat t27, PQFormat t28, PQFormat t29, PQFormat t30   , PQFormat t31, PQFormat t32, PQFormat t33, PQFormat t34   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34       ]-    pqVariables = const 34+    pqVariables = 34  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -618,18 +633,18 @@   , PQFormat t25, PQFormat t26, PQFormat t27, PQFormat t28, PQFormat t29, PQFormat t30   , PQFormat t31, PQFormat t32, PQFormat t33, PQFormat t34, PQFormat t35   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35       ]-    pqVariables = const 35+    pqVariables = 35  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -639,18 +654,18 @@   , PQFormat t25, PQFormat t26, PQFormat t27, PQFormat t28, PQFormat t29, PQFormat t30   , PQFormat t31, PQFormat t32, PQFormat t33, PQFormat t34, PQFormat t35, PQFormat t36   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36       ]-    pqVariables = const 36+    pqVariables = 36  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -661,19 +676,19 @@   , PQFormat t31, PQFormat t32, PQFormat t33, PQFormat t34, PQFormat t35, PQFormat t36   , PQFormat t37   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37       ]-    pqVariables = const 37+    pqVariables = 37  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -684,19 +699,19 @@   , PQFormat t31, PQFormat t32, PQFormat t33, PQFormat t34, PQFormat t35, PQFormat t36   , PQFormat t37, PQFormat t38   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38       ]-    pqVariables = const 38+    pqVariables = 38  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -707,19 +722,19 @@   , PQFormat t31, PQFormat t32, PQFormat t33, PQFormat t34, PQFormat t35, PQFormat t36   , PQFormat t37, PQFormat t38, PQFormat t39   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39       ]-    pqVariables = const 39+    pqVariables = 39  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -730,19 +745,19 @@   , PQFormat t31, PQFormat t32, PQFormat t33, PQFormat t34, PQFormat t35, PQFormat t36   , PQFormat t37, PQFormat t38, PQFormat t39, PQFormat t40   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40       ]-    pqVariables = const 40+    pqVariables = 40  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -753,20 +768,20 @@   , PQFormat t31, PQFormat t32, PQFormat t33, PQFormat t34, PQFormat t35, PQFormat t36   , PQFormat t37, PQFormat t38, PQFormat t39, PQFormat t40, PQFormat t41   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)-      , pqFormat (u::t41)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40+      , pqFormat @t41       ]-    pqVariables = const 41+    pqVariables = 41  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -777,20 +792,20 @@   , PQFormat t31, PQFormat t32, PQFormat t33, PQFormat t34, PQFormat t35, PQFormat t36   , PQFormat t37, PQFormat t38, PQFormat t39, PQFormat t40, PQFormat t41, PQFormat t42   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)-      , pqFormat (u::t41), pqFormat (u::t42)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40+      , pqFormat @t41, pqFormat @t42       ]-    pqVariables = const 42+    pqVariables = 42  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -802,20 +817,20 @@   , PQFormat t37, PQFormat t38, PQFormat t39, PQFormat t40, PQFormat t41, PQFormat t42   , PQFormat t43   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)-      , pqFormat (u::t41), pqFormat (u::t42), pqFormat (u::t43)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40+      , pqFormat @t41, pqFormat @t42, pqFormat @t43       ]-    pqVariables = const 43+    pqVariables = 43  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -827,20 +842,20 @@   , PQFormat t37, PQFormat t38, PQFormat t39, PQFormat t40, PQFormat t41, PQFormat t42   , PQFormat t43, PQFormat t44   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)-      , pqFormat (u::t41), pqFormat (u::t42), pqFormat (u::t43), pqFormat (u::t44)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40+      , pqFormat @t41, pqFormat @t42, pqFormat @t43, pqFormat @t44       ]-    pqVariables = const 44+    pqVariables = 44  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -852,21 +867,21 @@   , PQFormat t37, PQFormat t38, PQFormat t39, PQFormat t40, PQFormat t41, PQFormat t42   , PQFormat t43, PQFormat t44, PQFormat t45   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)-      , pqFormat (u::t41), pqFormat (u::t42), pqFormat (u::t43), pqFormat (u::t44)-      , pqFormat (u::t45)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40+      , pqFormat @t41, pqFormat @t42, pqFormat @t43, pqFormat @t44+      , pqFormat @t45       ]-    pqVariables = const 45+    pqVariables = 45  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -878,21 +893,21 @@   , PQFormat t37, PQFormat t38, PQFormat t39, PQFormat t40, PQFormat t41, PQFormat t42   , PQFormat t43, PQFormat t44, PQFormat t45, PQFormat t46   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)-      , pqFormat (u::t41), pqFormat (u::t42), pqFormat (u::t43), pqFormat (u::t44)-      , pqFormat (u::t45), pqFormat (u::t46)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40+      , pqFormat @t41, pqFormat @t42, pqFormat @t43, pqFormat @t44+      , pqFormat @t45, pqFormat @t46       ]-    pqVariables = const 46+    pqVariables = 46  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -904,21 +919,21 @@   , PQFormat t37, PQFormat t38, PQFormat t39, PQFormat t40, PQFormat t41, PQFormat t42   , PQFormat t43, PQFormat t44, PQFormat t45, PQFormat t46, PQFormat t47   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)-      , pqFormat (u::t41), pqFormat (u::t42), pqFormat (u::t43), pqFormat (u::t44)-      , pqFormat (u::t45), pqFormat (u::t46), pqFormat (u::t47)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40+      , pqFormat @t41, pqFormat @t42, pqFormat @t43, pqFormat @t44+      , pqFormat @t45, pqFormat @t46, pqFormat @t47       ]-    pqVariables = const 47+    pqVariables = 47  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -930,21 +945,21 @@   , PQFormat t37, PQFormat t38, PQFormat t39, PQFormat t40, PQFormat t41, PQFormat t42   , PQFormat t43, PQFormat t44, PQFormat t45, PQFormat t46, PQFormat t47, PQFormat t48   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)-      , pqFormat (u::t41), pqFormat (u::t42), pqFormat (u::t43), pqFormat (u::t44)-      , pqFormat (u::t45), pqFormat (u::t46), pqFormat (u::t47), pqFormat (u::t48)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40+      , pqFormat @t41, pqFormat @t42, pqFormat @t43, pqFormat @t44+      , pqFormat @t45, pqFormat @t46, pqFormat @t47, pqFormat @t48       ]-    pqVariables = const 48+    pqVariables = 48  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -957,22 +972,22 @@   , PQFormat t43, PQFormat t44, PQFormat t45, PQFormat t46, PQFormat t47, PQFormat t48   , PQFormat t49   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)-      , pqFormat (u::t41), pqFormat (u::t42), pqFormat (u::t43), pqFormat (u::t44)-      , pqFormat (u::t45), pqFormat (u::t46), pqFormat (u::t47), pqFormat (u::t48)-      , pqFormat (u::t49)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40+      , pqFormat @t41, pqFormat @t42, pqFormat @t43, pqFormat @t44+      , pqFormat @t45, pqFormat @t46, pqFormat @t47, pqFormat @t48+      , pqFormat @t49       ]-    pqVariables = const 49+    pqVariables = 49  instance (     PQFormat t1, PQFormat t2, PQFormat t3, PQFormat t4, PQFormat t5, PQFormat t6@@ -985,19 +1000,19 @@   , PQFormat t43, PQFormat t44, PQFormat t45, PQFormat t46, PQFormat t47, PQFormat t48   , PQFormat t49, PQFormat t50   ) => PQFormat (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21,  t22, t23, t24, t25, 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) where-    pqFormat = const $ BS.concat [-        pqFormat (u::t1), pqFormat (u::t2), pqFormat (u::t3), pqFormat (u::t4)-      , pqFormat (u::t5), pqFormat (u::t6), pqFormat (u::t7), pqFormat (u::t8)-      , pqFormat (u::t9), pqFormat (u::t10), pqFormat (u::t11), pqFormat (u::t12)-      , pqFormat (u::t13), pqFormat (u::t14), pqFormat (u::t15), pqFormat (u::t16)-      , pqFormat (u::t17), pqFormat (u::t18), pqFormat (u::t19), pqFormat (u::t20)-      , pqFormat (u::t21), pqFormat (u::t22), pqFormat (u::t23), pqFormat (u::t24)-      , pqFormat (u::t25), pqFormat (u::t26), pqFormat (u::t27), pqFormat (u::t28)-      , pqFormat (u::t29), pqFormat (u::t30), pqFormat (u::t31), pqFormat (u::t32)-      , pqFormat (u::t33), pqFormat (u::t34), pqFormat (u::t35), pqFormat (u::t36)-      , pqFormat (u::t37), pqFormat (u::t38), pqFormat (u::t39), pqFormat (u::t40)-      , pqFormat (u::t41), pqFormat (u::t42), pqFormat (u::t43), pqFormat (u::t44)-      , pqFormat (u::t45), pqFormat (u::t46), pqFormat (u::t47), pqFormat (u::t48)-      , pqFormat (u::t49), pqFormat (u::t50)+    pqFormat = BS.concat [+        pqFormat @t1, pqFormat @t2, pqFormat @t3, pqFormat @t4+      , pqFormat @t5, pqFormat @t6, pqFormat @t7, pqFormat @t8+      , pqFormat @t9, pqFormat @t10, pqFormat @t11, pqFormat @t12+      , pqFormat @t13, pqFormat @t14, pqFormat @t15, pqFormat @t16+      , pqFormat @t17, pqFormat @t18, pqFormat @t19, pqFormat @t20+      , pqFormat @t21, pqFormat @t22, pqFormat @t23, pqFormat @t24+      , pqFormat @t25, pqFormat @t26, pqFormat @t27, pqFormat @t28+      , pqFormat @t29, pqFormat @t30, pqFormat @t31, pqFormat @t32+      , pqFormat @t33, pqFormat @t34, pqFormat @t35, pqFormat @t36+      , pqFormat @t37, pqFormat @t38, pqFormat @t39, pqFormat @t40+      , pqFormat @t41, pqFormat @t42, pqFormat @t43, pqFormat @t44+      , pqFormat @t45, pqFormat @t46, pqFormat @t47, pqFormat @t48+      , pqFormat @t49, pqFormat @t50       ]-    pqVariables = const 50+    pqVariables = 50
src/Database/PostgreSQL/PQTypes/FromRow.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TypeApplications #-} module Database.PostgreSQL.PQTypes.FromRow (     FromRow(..)   , fromRow'@@ -43,7 +44,7 @@ verify err = verifyPQTRes err "fromRow"  withFormat :: forall row. FromRow row => (CString -> IO row) -> IO row-withFormat = BS.unsafeUseAsCString $ pqFormat0 (undefined::row)+withFormat = BS.unsafeUseAsCString $ pqFormat0 @row  ---------------------------------------- @@ -67,7 +68,7 @@       <$> fromRow res err b  i       <*> fromRow res err b' i       where-        b' = b + fromIntegral (pqVariables (undefined::row1))+        b' = b + fromIntegral (pqVariables @row1)  instance FromRow () where   fromRow _ _ _ _ = return ()
src/Database/PostgreSQL/PQTypes/Internal/C/Interface.hs view
@@ -105,13 +105,11 @@ -- dispatched Nothing is returned, otherwise a textual explanation of what -- happened. c_PQcancel :: Ptr PGconn -> IO (Maybe String)-c_PQcancel conn = E.mask $ \restore -> do-  cancel <- c_PQgetCancel conn-  (`E.finally` c_PQfreeCancel cancel) . restore $ do-    allocaBytes errbufsize $ \errbuf -> do-      c_rawPQcancel cancel errbuf (fromIntegral errbufsize) >>= \case-        0 -> Just <$> peekCString errbuf-        _ -> return Nothing+c_PQcancel conn = E.bracket (c_PQgetCancel conn) c_PQfreeCancel $ \cancel -> do+  allocaBytes errbufsize $ \errbuf -> do+    c_rawPQcancel cancel errbuf (fromIntegral errbufsize) >>= \case+      0 -> Just <$> peekCString errbuf+      _ -> return Nothing   where     -- Size recommended by     -- https://www.postgresql.org/docs/current/static/libpq-cancel.html
src/Database/PostgreSQL/PQTypes/Internal/Connection.hs view
@@ -200,13 +200,12 @@       conn <- c_PQconnectStart conninfo       when (conn == nullPtr) $         throwError "PQconnectStart returned a null pointer"-      -- Work around a bug in GHC that causes foreign pointer-      -- finalizers to be run multiple times under random-      -- circumstances (see-      -- https://ghc.haskell.org/trac/ghc/ticket/7170 for more-      -- details) by providing another level of indirection and a-      -- wrapper for PQfinish that can be safely called multiple-      -- times.+      -- Work around a bug in GHC that causes foreign pointer finalizers to be+      -- run multiple times under random circumstances (see+      -- https://ghc.haskell.org/trac/ghc/ticket/7170 for more details; note+      -- that the bug was fixed in GHC 8.0.1, but we still want to support+      -- previous versions) by providing another level of indirection and a+      -- wrapper for PQfinish that can be safely called multiple times.       connPtr <- mallocForeignPtr       withForeignPtr connPtr (`poke` conn)       addForeignPtrFinalizer c_ptr_PQfinishPtr connPtr
src/Database/PostgreSQL/PQTypes/Internal/QueryResult.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TypeApplications #-} module Database.PostgreSQL.PQTypes.Internal.QueryResult (     QueryResult(..)   , ntuples@@ -56,10 +57,10 @@     -- FrowRow and FromSQL instances are (the ones provided     -- by the library fulfil this requirement).     rowlen <- fromIntegral <$> c_PQnfields res-    when (rowlen /= pqVariables row) $ E.throwIO DBException {+    when (rowlen /= pqVariablesP rowp) $ E.throwIO DBException {       dbeQueryContext = ctx     , dbeError = RowLengthMismatch {-        lengthExpected  = pqVariables row+        lengthExpected  = pqVariablesP rowp       , lengthDelivered = rowlen       }     }@@ -69,7 +70,8 @@       worker res err i n iacc   where     -- ⊥ of existential type hidden in QueryResult-    row = let _ = g row in row+    row      = let _ = g row in row+    rowp     = pure row      apply = if strict then ($!) else ($) 
src/Database/PostgreSQL/PQTypes/Interval.hsc view
@@ -93,7 +93,7 @@     #{poke PGinterval, usecs} ptr intMicroseconds  instance PQFormat Interval where-  pqFormat = const $ BS.pack "%interval"+  pqFormat = BS.pack "%interval"  instance FromSQL Interval where   type PQBase Interval = Interval
src/Database/PostgreSQL/PQTypes/JSON.hs view
@@ -22,7 +22,7 @@   deriving (Eq, Functor, Ord, Show, Typeable)  instance PQFormat (JSON json) where-  pqFormat = const $ BS.pack "%json"+  pqFormat = BS.pack "%json"  instance FromSQL (JSON BS.ByteString) where   type PQBase (JSON BS.ByteString) = PGbytea@@ -55,7 +55,7 @@   deriving (Eq, Functor, Ord, Show, Typeable)  instance PQFormat (JSONB jsonb) where-  pqFormat = const $ BS.pack "%jsonb"+  pqFormat = BS.pack "%jsonb"  instance FromSQL (JSONB BS.ByteString) where   type PQBase (JSONB BS.ByteString) = PGbytea
src/Database/PostgreSQL/PQTypes/SQL.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TypeApplications #-} module Database.PostgreSQL.PQTypes.SQL (     SQL   , mkSQL@@ -54,8 +55,8 @@     where       f param err nums chunk = case chunk of         SqlString s -> return s-        SqlParam v -> toSQL v pa $ \base ->-          BS.unsafeUseAsCString (pqFormat0 v) $ \fmt -> do+        SqlParam (v::t) -> toSQL v pa $ \base ->+          BS.unsafeUseAsCString (pqFormat0 @t) $ \fmt -> do             verifyPQTRes err "withSQL (SQL)" =<< c_PQputf1 param err fmt base             modifyMVar nums $ \n -> return . (, "$" <> showt n) $! n+1 
src/Database/PostgreSQL/PQTypes/ToRow.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE TypeApplications #-} module Database.PostgreSQL.PQTypes.ToRow (     ToRow(..)   , toRow'@@ -21,7 +22,7 @@ verify err = verifyPQTRes err "toRow"  withFormat :: forall row. ToRow row => row -> (CString -> IO ()) -> IO ()-withFormat = const $ BS.unsafeUseAsCString $ pqFormat0 (undefined::row)+withFormat = const $ BS.unsafeUseAsCString $ pqFormat0 @row  ---------------------------------------- 
src/Database/PostgreSQL/PQTypes/XML.hs view
@@ -18,7 +18,7 @@   deriving (Eq, Ord, Read, Show, Typeable)  instance PQFormat XML where-  pqFormat = const $ BSC.pack "%xml"+  pqFormat = BSC.pack "%xml"  instance FromSQL XML where   type PQBase XML = PGbytea
test/Main.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE TypeApplications #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Main where @@ -75,8 +76,11 @@ ----------------------------------------  newtype AsciiChar = AsciiChar { unAsciiChar :: Char }-  deriving (Eq, Show, Typeable, PQFormat)+  deriving (Eq, Show, Typeable) +instance PQFormat AsciiChar where+  pqFormat = pqFormat @Char+ instance ToSQL AsciiChar where   type PQDest AsciiChar = PQDest Char   toSQL = toSQL . unAsciiChar@@ -143,7 +147,7 @@ type instance CompositeRow Simple = (Maybe Int32, Maybe Day)  instance PQFormat Simple where-  pqFormat _ = "%simple_"+  pqFormat = "%simple_" instance CompositeFromSQL Simple where   toComposite (a, b) = Simple a b instance CompositeToSQL Simple where@@ -158,7 +162,7 @@ type instance CompositeRow Nested = (Maybe Double, Maybe (Composite Simple))  instance PQFormat Nested where-  pqFormat _ = "%nested_"+  pqFormat = "%nested_" instance CompositeFromSQL Nested where   toComposite (a, b) = Nested a (unComposite <$> b) instance CompositeToSQL Nested where@@ -354,9 +358,9 @@  rowTest :: forall row. (Arbitrary row, Eq row, Show row, ToRow row, FromRow row)         => TestData -> row -> Test-rowTest td r = testCase ("Putting row of length" <+> show (pqVariables r) <+> "through database works") . runTestEnv td def . runTimes 100 $ do+rowTest td _r = testCase ("Putting row of length" <+> show (pqVariables @row) <+> "through database works") . runTestEnv td def . runTimes 100 $ do   row :: row <- randomValue 100-  let fmt = mintercalate ", " $ map (T.append "$" . showt) [1..pqVariables r]+  let fmt = mintercalate ", " $ map (T.append "$" . showt) [1..pqVariables @row]   runQuery_ $ rawSQL ("SELECT" <+> fmt) row   row' <- fetchOne id   assertEqual "Row doesn't change after getting through database" row row' (==)
test/Test/QuickCheck/Arbitrary/Instances.hs view
@@ -1,5 +1,6 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} {-# LANGUAGE CPP #-}+{-# LANGUAGE TypeApplications #-} module Test.QuickCheck.Arbitrary.Instances where  import Control.Applicative@@ -20,7 +21,10 @@ import Database.PostgreSQL.PQTypes  newtype String0 = String0 { unString0 :: String }-  deriving (Eq, Ord, Show, Typeable, PQFormat)+  deriving (Eq, Ord, Show, Typeable)++instance PQFormat String0 where+  pqFormat = pqFormat @String  instance FromSQL String0 where   type PQBase String0 = PQBase String