diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -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
diff --git a/examples/Catalog.hs b/examples/Catalog.hs
--- a/examples/Catalog.hs
+++ b/examples/Catalog.hs
@@ -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 {
diff --git a/hpqtypes.cabal b/hpqtypes.cabal
--- a/hpqtypes.cabal
+++ b/hpqtypes.cabal
@@ -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
diff --git a/src/Database/PostgreSQL/PQTypes/Array.hs b/src/Database/PostgreSQL/PQTypes/Array.hs
--- a/src/Database/PostgreSQL/PQTypes/Array.hs
+++ b/src/Database/PostgreSQL/PQTypes/Array.hs
@@ -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
diff --git a/src/Database/PostgreSQL/PQTypes/Composite.hs b/src/Database/PostgreSQL/PQTypes/Composite.hs
--- a/src/Database/PostgreSQL/PQTypes/Composite.hs
+++ b/src/Database/PostgreSQL/PQTypes/Composite.hs
@@ -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
diff --git a/src/Database/PostgreSQL/PQTypes/Format.hs b/src/Database/PostgreSQL/PQTypes/Format.hs
--- a/src/Database/PostgreSQL/PQTypes/Format.hs
+++ b/src/Database/PostgreSQL/PQTypes/Format.hs
@@ -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
diff --git a/src/Database/PostgreSQL/PQTypes/FromRow.hs b/src/Database/PostgreSQL/PQTypes/FromRow.hs
--- a/src/Database/PostgreSQL/PQTypes/FromRow.hs
+++ b/src/Database/PostgreSQL/PQTypes/FromRow.hs
@@ -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 ()
diff --git a/src/Database/PostgreSQL/PQTypes/Internal/C/Interface.hs b/src/Database/PostgreSQL/PQTypes/Internal/C/Interface.hs
--- a/src/Database/PostgreSQL/PQTypes/Internal/C/Interface.hs
+++ b/src/Database/PostgreSQL/PQTypes/Internal/C/Interface.hs
@@ -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
diff --git a/src/Database/PostgreSQL/PQTypes/Internal/Connection.hs b/src/Database/PostgreSQL/PQTypes/Internal/Connection.hs
--- a/src/Database/PostgreSQL/PQTypes/Internal/Connection.hs
+++ b/src/Database/PostgreSQL/PQTypes/Internal/Connection.hs
@@ -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
diff --git a/src/Database/PostgreSQL/PQTypes/Internal/QueryResult.hs b/src/Database/PostgreSQL/PQTypes/Internal/QueryResult.hs
--- a/src/Database/PostgreSQL/PQTypes/Internal/QueryResult.hs
+++ b/src/Database/PostgreSQL/PQTypes/Internal/QueryResult.hs
@@ -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 ($)
 
diff --git a/src/Database/PostgreSQL/PQTypes/Interval.hsc b/src/Database/PostgreSQL/PQTypes/Interval.hsc
--- a/src/Database/PostgreSQL/PQTypes/Interval.hsc
+++ b/src/Database/PostgreSQL/PQTypes/Interval.hsc
@@ -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
diff --git a/src/Database/PostgreSQL/PQTypes/JSON.hs b/src/Database/PostgreSQL/PQTypes/JSON.hs
--- a/src/Database/PostgreSQL/PQTypes/JSON.hs
+++ b/src/Database/PostgreSQL/PQTypes/JSON.hs
@@ -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
diff --git a/src/Database/PostgreSQL/PQTypes/SQL.hs b/src/Database/PostgreSQL/PQTypes/SQL.hs
--- a/src/Database/PostgreSQL/PQTypes/SQL.hs
+++ b/src/Database/PostgreSQL/PQTypes/SQL.hs
@@ -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
 
diff --git a/src/Database/PostgreSQL/PQTypes/ToRow.hs b/src/Database/PostgreSQL/PQTypes/ToRow.hs
--- a/src/Database/PostgreSQL/PQTypes/ToRow.hs
+++ b/src/Database/PostgreSQL/PQTypes/ToRow.hs
@@ -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
 
 ----------------------------------------
 
diff --git a/src/Database/PostgreSQL/PQTypes/XML.hs b/src/Database/PostgreSQL/PQTypes/XML.hs
--- a/src/Database/PostgreSQL/PQTypes/XML.hs
+++ b/src/Database/PostgreSQL/PQTypes/XML.hs
@@ -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
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -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' (==)
diff --git a/test/Test/QuickCheck/Arbitrary/Instances.hs b/test/Test/QuickCheck/Arbitrary/Instances.hs
--- a/test/Test/QuickCheck/Arbitrary/Instances.hs
+++ b/test/Test/QuickCheck/Arbitrary/Instances.hs
@@ -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
