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 +5/−0
- examples/Catalog.hs +1/−1
- hpqtypes.cabal +3/−3
- src/Database/PostgreSQL/PQTypes/Array.hs +9/−8
- src/Database/PostgreSQL/PQTypes/Composite.hs +2/−1
- src/Database/PostgreSQL/PQTypes/Format.hs +487/−472
- src/Database/PostgreSQL/PQTypes/FromRow.hs +3/−2
- src/Database/PostgreSQL/PQTypes/Internal/C/Interface.hs +5/−7
- src/Database/PostgreSQL/PQTypes/Internal/Connection.hs +6/−7
- src/Database/PostgreSQL/PQTypes/Internal/QueryResult.hs +5/−3
- src/Database/PostgreSQL/PQTypes/Interval.hsc +1/−1
- src/Database/PostgreSQL/PQTypes/JSON.hs +2/−2
- src/Database/PostgreSQL/PQTypes/SQL.hs +3/−2
- src/Database/PostgreSQL/PQTypes/ToRow.hs +2/−1
- src/Database/PostgreSQL/PQTypes/XML.hs +1/−1
- test/Main.hs +9/−5
- test/Test/QuickCheck/Arbitrary/Instances.hs +5/−1
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