{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE PolyKinds #-}
module Exinst.Internal.Product
( P1(P1)
, P2(P2)
, P3(P3)
, P4(P4)
) where
import GHC.Generics (Generic)
data P1 l r (a1 :: k1)
= P1 (l a1) (r a1)
deriving (P1 l r a1 -> P1 l r a1 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Eq (l a1), Eq (r a1)) =>
P1 l r a1 -> P1 l r a1 -> Bool
/= :: P1 l r a1 -> P1 l r a1 -> Bool
$c/= :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Eq (l a1), Eq (r a1)) =>
P1 l r a1 -> P1 l r a1 -> Bool
== :: P1 l r a1 -> P1 l r a1 -> Bool
$c== :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Eq (l a1), Eq (r a1)) =>
P1 l r a1 -> P1 l r a1 -> Bool
Eq, Int -> P1 l r a1 -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Show (l a1), Show (r a1)) =>
Int -> P1 l r a1 -> ShowS
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Show (l a1), Show (r a1)) =>
[P1 l r a1] -> ShowS
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Show (l a1), Show (r a1)) =>
P1 l r a1 -> String
showList :: [P1 l r a1] -> ShowS
$cshowList :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Show (l a1), Show (r a1)) =>
[P1 l r a1] -> ShowS
show :: P1 l r a1 -> String
$cshow :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Show (l a1), Show (r a1)) =>
P1 l r a1 -> String
showsPrec :: Int -> P1 l r a1 -> ShowS
$cshowsPrec :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Show (l a1), Show (r a1)) =>
Int -> P1 l r a1 -> ShowS
Show, ReadPrec [P1 l r a1]
ReadPrec (P1 l r a1)
ReadS [P1 l r a1]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Read (l a1), Read (r a1)) =>
ReadPrec [P1 l r a1]
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Read (l a1), Read (r a1)) =>
ReadPrec (P1 l r a1)
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Read (l a1), Read (r a1)) =>
Int -> ReadS (P1 l r a1)
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Read (l a1), Read (r a1)) =>
ReadS [P1 l r a1]
readListPrec :: ReadPrec [P1 l r a1]
$creadListPrec :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Read (l a1), Read (r a1)) =>
ReadPrec [P1 l r a1]
readPrec :: ReadPrec (P1 l r a1)
$creadPrec :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Read (l a1), Read (r a1)) =>
ReadPrec (P1 l r a1)
readList :: ReadS [P1 l r a1]
$creadList :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Read (l a1), Read (r a1)) =>
ReadS [P1 l r a1]
readsPrec :: Int -> ReadS (P1 l r a1)
$creadsPrec :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Read (l a1), Read (r a1)) =>
Int -> ReadS (P1 l r a1)
Read, P1 l r a1 -> P1 l r a1 -> Bool
P1 l r a1 -> P1 l r a1 -> Ordering
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall {k1} {l :: k1 -> *} {r :: k1 -> *} {a1 :: k1}.
(Ord (l a1), Ord (r a1)) =>
Eq (P1 l r a1)
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Ord (l a1), Ord (r a1)) =>
P1 l r a1 -> P1 l r a1 -> Bool
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Ord (l a1), Ord (r a1)) =>
P1 l r a1 -> P1 l r a1 -> Ordering
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Ord (l a1), Ord (r a1)) =>
P1 l r a1 -> P1 l r a1 -> P1 l r a1
min :: P1 l r a1 -> P1 l r a1 -> P1 l r a1
$cmin :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Ord (l a1), Ord (r a1)) =>
P1 l r a1 -> P1 l r a1 -> P1 l r a1
max :: P1 l r a1 -> P1 l r a1 -> P1 l r a1
$cmax :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Ord (l a1), Ord (r a1)) =>
P1 l r a1 -> P1 l r a1 -> P1 l r a1
>= :: P1 l r a1 -> P1 l r a1 -> Bool
$c>= :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Ord (l a1), Ord (r a1)) =>
P1 l r a1 -> P1 l r a1 -> Bool
> :: P1 l r a1 -> P1 l r a1 -> Bool
$c> :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Ord (l a1), Ord (r a1)) =>
P1 l r a1 -> P1 l r a1 -> Bool
<= :: P1 l r a1 -> P1 l r a1 -> Bool
$c<= :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Ord (l a1), Ord (r a1)) =>
P1 l r a1 -> P1 l r a1 -> Bool
< :: P1 l r a1 -> P1 l r a1 -> Bool
$c< :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Ord (l a1), Ord (r a1)) =>
P1 l r a1 -> P1 l r a1 -> Bool
compare :: P1 l r a1 -> P1 l r a1 -> Ordering
$ccompare :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1).
(Ord (l a1), Ord (r a1)) =>
P1 l r a1 -> P1 l r a1 -> Ordering
Ord, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1) x.
Rep (P1 l r a1) x -> P1 l r a1
forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1) x.
P1 l r a1 -> Rep (P1 l r a1) x
$cto :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1) x.
Rep (P1 l r a1) x -> P1 l r a1
$cfrom :: forall k1 (l :: k1 -> *) (r :: k1 -> *) (a1 :: k1) x.
P1 l r a1 -> Rep (P1 l r a1) x
Generic)
data P2 l r (a2 :: k2) (a1 :: k1)
= P2 (l a2 a1) (r a2 a1)
deriving (P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Eq (l a2 a1), Eq (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
/= :: P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
$c/= :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Eq (l a2 a1), Eq (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
== :: P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
$c== :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Eq (l a2 a1), Eq (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
Eq, Int -> P2 l r a2 a1 -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Show (l a2 a1), Show (r a2 a1)) =>
Int -> P2 l r a2 a1 -> ShowS
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Show (l a2 a1), Show (r a2 a1)) =>
[P2 l r a2 a1] -> ShowS
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Show (l a2 a1), Show (r a2 a1)) =>
P2 l r a2 a1 -> String
showList :: [P2 l r a2 a1] -> ShowS
$cshowList :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Show (l a2 a1), Show (r a2 a1)) =>
[P2 l r a2 a1] -> ShowS
show :: P2 l r a2 a1 -> String
$cshow :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Show (l a2 a1), Show (r a2 a1)) =>
P2 l r a2 a1 -> String
showsPrec :: Int -> P2 l r a2 a1 -> ShowS
$cshowsPrec :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Show (l a2 a1), Show (r a2 a1)) =>
Int -> P2 l r a2 a1 -> ShowS
Show, ReadPrec [P2 l r a2 a1]
ReadPrec (P2 l r a2 a1)
ReadS [P2 l r a2 a1]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Read (l a2 a1), Read (r a2 a1)) =>
ReadPrec [P2 l r a2 a1]
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Read (l a2 a1), Read (r a2 a1)) =>
ReadPrec (P2 l r a2 a1)
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Read (l a2 a1), Read (r a2 a1)) =>
Int -> ReadS (P2 l r a2 a1)
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Read (l a2 a1), Read (r a2 a1)) =>
ReadS [P2 l r a2 a1]
readListPrec :: ReadPrec [P2 l r a2 a1]
$creadListPrec :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Read (l a2 a1), Read (r a2 a1)) =>
ReadPrec [P2 l r a2 a1]
readPrec :: ReadPrec (P2 l r a2 a1)
$creadPrec :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Read (l a2 a1), Read (r a2 a1)) =>
ReadPrec (P2 l r a2 a1)
readList :: ReadS [P2 l r a2 a1]
$creadList :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Read (l a2 a1), Read (r a2 a1)) =>
ReadS [P2 l r a2 a1]
readsPrec :: Int -> ReadS (P2 l r a2 a1)
$creadsPrec :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Read (l a2 a1), Read (r a2 a1)) =>
Int -> ReadS (P2 l r a2 a1)
Read, P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
P2 l r a2 a1 -> P2 l r a2 a1 -> Ordering
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall {k2} {k1} {l :: k2 -> k1 -> *} {r :: k2 -> k1 -> *}
{a2 :: k2} {a1 :: k1}.
(Ord (l a2 a1), Ord (r a2 a1)) =>
Eq (P2 l r a2 a1)
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Ord (l a2 a1), Ord (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Ord (l a2 a1), Ord (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> Ordering
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Ord (l a2 a1), Ord (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> P2 l r a2 a1
min :: P2 l r a2 a1 -> P2 l r a2 a1 -> P2 l r a2 a1
$cmin :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Ord (l a2 a1), Ord (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> P2 l r a2 a1
max :: P2 l r a2 a1 -> P2 l r a2 a1 -> P2 l r a2 a1
$cmax :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Ord (l a2 a1), Ord (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> P2 l r a2 a1
>= :: P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
$c>= :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Ord (l a2 a1), Ord (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
> :: P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
$c> :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Ord (l a2 a1), Ord (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
<= :: P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
$c<= :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Ord (l a2 a1), Ord (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
< :: P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
$c< :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Ord (l a2 a1), Ord (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> Bool
compare :: P2 l r a2 a1 -> P2 l r a2 a1 -> Ordering
$ccompare :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1).
(Ord (l a2 a1), Ord (r a2 a1)) =>
P2 l r a2 a1 -> P2 l r a2 a1 -> Ordering
Ord, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1) x.
Rep (P2 l r a2 a1) x -> P2 l r a2 a1
forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1) x.
P2 l r a2 a1 -> Rep (P2 l r a2 a1) x
$cto :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1) x.
Rep (P2 l r a2 a1) x -> P2 l r a2 a1
$cfrom :: forall k2 k1 (l :: k2 -> k1 -> *) (r :: k2 -> k1 -> *) (a2 :: k2)
(a1 :: k1) x.
P2 l r a2 a1 -> Rep (P2 l r a2 a1) x
Generic)
data P3 l r (a3 :: k3) (a2 :: k2) (a1 :: k1)
= P3 (l a3 a2 a1) (r a3 a2 a1)
deriving (P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Eq (l a3 a2 a1), Eq (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
/= :: P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
$c/= :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Eq (l a3 a2 a1), Eq (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
== :: P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
$c== :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Eq (l a3 a2 a1), Eq (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
Eq, Int -> P3 l r a3 a2 a1 -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Show (l a3 a2 a1), Show (r a3 a2 a1)) =>
Int -> P3 l r a3 a2 a1 -> ShowS
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Show (l a3 a2 a1), Show (r a3 a2 a1)) =>
[P3 l r a3 a2 a1] -> ShowS
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Show (l a3 a2 a1), Show (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> String
showList :: [P3 l r a3 a2 a1] -> ShowS
$cshowList :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Show (l a3 a2 a1), Show (r a3 a2 a1)) =>
[P3 l r a3 a2 a1] -> ShowS
show :: P3 l r a3 a2 a1 -> String
$cshow :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Show (l a3 a2 a1), Show (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> String
showsPrec :: Int -> P3 l r a3 a2 a1 -> ShowS
$cshowsPrec :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Show (l a3 a2 a1), Show (r a3 a2 a1)) =>
Int -> P3 l r a3 a2 a1 -> ShowS
Show, ReadPrec [P3 l r a3 a2 a1]
ReadPrec (P3 l r a3 a2 a1)
ReadS [P3 l r a3 a2 a1]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Read (l a3 a2 a1), Read (r a3 a2 a1)) =>
ReadPrec [P3 l r a3 a2 a1]
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Read (l a3 a2 a1), Read (r a3 a2 a1)) =>
ReadPrec (P3 l r a3 a2 a1)
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Read (l a3 a2 a1), Read (r a3 a2 a1)) =>
Int -> ReadS (P3 l r a3 a2 a1)
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Read (l a3 a2 a1), Read (r a3 a2 a1)) =>
ReadS [P3 l r a3 a2 a1]
readListPrec :: ReadPrec [P3 l r a3 a2 a1]
$creadListPrec :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Read (l a3 a2 a1), Read (r a3 a2 a1)) =>
ReadPrec [P3 l r a3 a2 a1]
readPrec :: ReadPrec (P3 l r a3 a2 a1)
$creadPrec :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Read (l a3 a2 a1), Read (r a3 a2 a1)) =>
ReadPrec (P3 l r a3 a2 a1)
readList :: ReadS [P3 l r a3 a2 a1]
$creadList :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Read (l a3 a2 a1), Read (r a3 a2 a1)) =>
ReadS [P3 l r a3 a2 a1]
readsPrec :: Int -> ReadS (P3 l r a3 a2 a1)
$creadsPrec :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Read (l a3 a2 a1), Read (r a3 a2 a1)) =>
Int -> ReadS (P3 l r a3 a2 a1)
Read, P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Ordering
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall {k3} {k2} {k1} {l :: k3 -> k2 -> k1 -> *}
{r :: k3 -> k2 -> k1 -> *} {a3 :: k3} {a2 :: k2} {a1 :: k1}.
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
Eq (P3 l r a3 a2 a1)
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Ordering
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> P3 l r a3 a2 a1
min :: P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> P3 l r a3 a2 a1
$cmin :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> P3 l r a3 a2 a1
max :: P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> P3 l r a3 a2 a1
$cmax :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> P3 l r a3 a2 a1
>= :: P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
$c>= :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
> :: P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
$c> :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
<= :: P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
$c<= :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
< :: P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
$c< :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Bool
compare :: P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Ordering
$ccompare :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1).
(Ord (l a3 a2 a1), Ord (r a3 a2 a1)) =>
P3 l r a3 a2 a1 -> P3 l r a3 a2 a1 -> Ordering
Ord, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1) x.
Rep (P3 l r a3 a2 a1) x -> P3 l r a3 a2 a1
forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1) x.
P3 l r a3 a2 a1 -> Rep (P3 l r a3 a2 a1) x
$cto :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1) x.
Rep (P3 l r a3 a2 a1) x -> P3 l r a3 a2 a1
$cfrom :: forall k3 k2 k1 (l :: k3 -> k2 -> k1 -> *)
(r :: k3 -> k2 -> k1 -> *) (a3 :: k3) (a2 :: k2) (a1 :: k1) x.
P3 l r a3 a2 a1 -> Rep (P3 l r a3 a2 a1) x
Generic)
data P4 l r (a4 :: k4) (a3 :: k3) (a2 :: k2) (a1 :: k1)
= P4 (l a4 a3 a2 a1) (r a4 a3 a2 a1)
deriving (P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Eq (l a4 a3 a2 a1), Eq (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
/= :: P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
$c/= :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Eq (l a4 a3 a2 a1), Eq (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
== :: P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
$c== :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Eq (l a4 a3 a2 a1), Eq (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
Eq, Int -> P4 l r a4 a3 a2 a1 -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Show (l a4 a3 a2 a1), Show (r a4 a3 a2 a1)) =>
Int -> P4 l r a4 a3 a2 a1 -> ShowS
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Show (l a4 a3 a2 a1), Show (r a4 a3 a2 a1)) =>
[P4 l r a4 a3 a2 a1] -> ShowS
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Show (l a4 a3 a2 a1), Show (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> String
showList :: [P4 l r a4 a3 a2 a1] -> ShowS
$cshowList :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Show (l a4 a3 a2 a1), Show (r a4 a3 a2 a1)) =>
[P4 l r a4 a3 a2 a1] -> ShowS
show :: P4 l r a4 a3 a2 a1 -> String
$cshow :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Show (l a4 a3 a2 a1), Show (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> String
showsPrec :: Int -> P4 l r a4 a3 a2 a1 -> ShowS
$cshowsPrec :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Show (l a4 a3 a2 a1), Show (r a4 a3 a2 a1)) =>
Int -> P4 l r a4 a3 a2 a1 -> ShowS
Show, ReadPrec [P4 l r a4 a3 a2 a1]
ReadPrec (P4 l r a4 a3 a2 a1)
ReadS [P4 l r a4 a3 a2 a1]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Read (l a4 a3 a2 a1), Read (r a4 a3 a2 a1)) =>
ReadPrec [P4 l r a4 a3 a2 a1]
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Read (l a4 a3 a2 a1), Read (r a4 a3 a2 a1)) =>
ReadPrec (P4 l r a4 a3 a2 a1)
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Read (l a4 a3 a2 a1), Read (r a4 a3 a2 a1)) =>
Int -> ReadS (P4 l r a4 a3 a2 a1)
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Read (l a4 a3 a2 a1), Read (r a4 a3 a2 a1)) =>
ReadS [P4 l r a4 a3 a2 a1]
readListPrec :: ReadPrec [P4 l r a4 a3 a2 a1]
$creadListPrec :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Read (l a4 a3 a2 a1), Read (r a4 a3 a2 a1)) =>
ReadPrec [P4 l r a4 a3 a2 a1]
readPrec :: ReadPrec (P4 l r a4 a3 a2 a1)
$creadPrec :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Read (l a4 a3 a2 a1), Read (r a4 a3 a2 a1)) =>
ReadPrec (P4 l r a4 a3 a2 a1)
readList :: ReadS [P4 l r a4 a3 a2 a1]
$creadList :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Read (l a4 a3 a2 a1), Read (r a4 a3 a2 a1)) =>
ReadS [P4 l r a4 a3 a2 a1]
readsPrec :: Int -> ReadS (P4 l r a4 a3 a2 a1)
$creadsPrec :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Read (l a4 a3 a2 a1), Read (r a4 a3 a2 a1)) =>
Int -> ReadS (P4 l r a4 a3 a2 a1)
Read, P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Ordering
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall {k4} {k3} {k2} {k1} {l :: k4 -> k3 -> k2 -> k1 -> *}
{r :: k4 -> k3 -> k2 -> k1 -> *} {a4 :: k4} {a3 :: k3} {a2 :: k2}
{a1 :: k1}.
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
Eq (P4 l r a4 a3 a2 a1)
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Ordering
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1
min :: P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1
$cmin :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1
max :: P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1
$cmax :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1
>= :: P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
$c>= :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
> :: P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
$c> :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
<= :: P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
$c<= :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
< :: P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
$c< :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Bool
compare :: P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Ordering
$ccompare :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1).
(Ord (l a4 a3 a2 a1), Ord (r a4 a3 a2 a1)) =>
P4 l r a4 a3 a2 a1 -> P4 l r a4 a3 a2 a1 -> Ordering
Ord, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1) x.
Rep (P4 l r a4 a3 a2 a1) x -> P4 l r a4 a3 a2 a1
forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1) x.
P4 l r a4 a3 a2 a1 -> Rep (P4 l r a4 a3 a2 a1) x
$cto :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1) x.
Rep (P4 l r a4 a3 a2 a1) x -> P4 l r a4 a3 a2 a1
$cfrom :: forall k4 k3 k2 k1 (l :: k4 -> k3 -> k2 -> k1 -> *)
(r :: k4 -> k3 -> k2 -> k1 -> *) (a4 :: k4) (a3 :: k3) (a2 :: k2)
(a1 :: k1) x.
P4 l r a4 a3 a2 a1 -> Rep (P4 l r a4 a3 a2 a1) x
Generic)