module Contravariant.Extras.ContrazipLifting where

import Contravariant.Extras.Prelude
import Contravariant.Extras.Contrazip
import Data.Functor.Contravariant.Divisible
import qualified Contravariant.Extras.TH as TH


contrazipLifting2 :: Divisible f => (forall x. g x -> f x) -> g a1 -> g a2 -> f (a1, a2)
contrazipLifting2 :: (forall x. g x -> f x) -> g a1 -> g a2 -> f (a1, a2)
contrazipLifting2 forall x. g x -> f x
fn g a1
a g a2
b = f a1 -> f a2 -> f (a1, a2)
forall (f :: * -> *) a1 a2.
Divisible f =>
f a1 -> f a2 -> f (a1, a2)
contrazip2 (g a1 -> f a1
forall x. g x -> f x
fn g a1
a) (g a2 -> f a2
forall x. g x -> f x
fn g a2
b)

contrazipLifting3 :: Divisible f => (forall x. g x -> f x) -> g a1 -> g a2 -> g a3 -> f (a1, a2, a3)
contrazipLifting3 :: (forall x. g x -> f x) -> g a1 -> g a2 -> g a3 -> f (a1, a2, a3)
contrazipLifting3 forall x. g x -> f x
fn g a1
a g a2
b g a3
c = f a1 -> f a2 -> f a3 -> f (a1, a2, a3)
forall (f :: * -> *) a1 a2 a3.
Divisible f =>
f a1 -> f a2 -> f a3 -> f (a1, a2, a3)
contrazip3 (g a1 -> f a1
forall x. g x -> f x
fn g a1
a) (g a2 -> f a2
forall x. g x -> f x
fn g a2
b) (g a3 -> f a3
forall x. g x -> f x
fn g a3
c)

contrazipLifting4 :: Divisible f => (forall x. g x -> f x) -> g a1 -> g a2 -> g a3 -> g a4 -> f (a1, a2, a3, a4)
contrazipLifting4 :: (forall x. g x -> f x)
-> g a1 -> g a2 -> g a3 -> g a4 -> f (a1, a2, a3, a4)
contrazipLifting4 forall x. g x -> f x
fn g a1
a g a2
b g a3
c g a4
d = f a1 -> f a2 -> f a3 -> f a4 -> f (a1, a2, a3, a4)
forall (f :: * -> *) a1 a2 a3 a4.
Divisible f =>
f a1 -> f a2 -> f a3 -> f a4 -> f (a1, a2, a3, a4)
contrazip4 (g a1 -> f a1
forall x. g x -> f x
fn g a1
a) (g a2 -> f a2
forall x. g x -> f x
fn g a2
b) (g a3 -> f a3
forall x. g x -> f x
fn g a3
c) (g a4 -> f a4
forall x. g x -> f x
fn g a4
d)

contrazipLifting5 :: Divisible f => (forall x. g x -> f x) -> g a1 -> g a2 -> g a3 -> g a4 -> g a5 -> f (a1, a2, a3, a4, a5)
contrazipLifting5 :: (forall x. g x -> f x)
-> g a1 -> g a2 -> g a3 -> g a4 -> g a5 -> f (a1, a2, a3, a4, a5)
contrazipLifting5 forall x. g x -> f x
fn g a1
a g a2
b g a3
c g a4
d g a5
e = f a1 -> f a2 -> f a3 -> f a4 -> f a5 -> f (a1, a2, a3, a4, a5)
forall (f :: * -> *) a1 a2 a3 a4 a5.
Divisible f =>
f a1 -> f a2 -> f a3 -> f a4 -> f a5 -> f (a1, a2, a3, a4, a5)
contrazip5 (g a1 -> f a1
forall x. g x -> f x
fn g a1
a) (g a2 -> f a2
forall x. g x -> f x
fn g a2
b) (g a3 -> f a3
forall x. g x -> f x
fn g a3
c) (g a4 -> f a4
forall x. g x -> f x
fn g a4
d) (g a5 -> f a5
forall x. g x -> f x
fn g a5
e)

contrazipLifting6 :: Divisible f => (forall x. g x -> f x) -> g a1 -> g a2 -> g a3 -> g a4 -> g a5 -> g a6 -> f (a1, a2, a3, a4, a5, a6)
contrazipLifting6 :: (forall x. g x -> f x)
-> g a1
-> g a2
-> g a3
-> g a4
-> g a5
-> g a6
-> f (a1, a2, a3, a4, a5, a6)
contrazipLifting6 forall x. g x -> f x
fn g a1
a g a2
b g a3
c g a4
d g a5
e g a6
f = f a1
-> f a2
-> f a3
-> f a4
-> f a5
-> f a6
-> f (a1, a2, a3, a4, a5, a6)
forall (f :: * -> *) a1 a2 a3 a4 a5 a6.
Divisible f =>
f a1
-> f a2
-> f a3
-> f a4
-> f a5
-> f a6
-> f (a1, a2, a3, a4, a5, a6)
contrazip6 (g a1 -> f a1
forall x. g x -> f x
fn g a1
a) (g a2 -> f a2
forall x. g x -> f x
fn g a2
b) (g a3 -> f a3
forall x. g x -> f x
fn g a3
c) (g a4 -> f a4
forall x. g x -> f x
fn g a4
d) (g a5 -> f a5
forall x. g x -> f x
fn g a5
e) (g a6 -> f a6
forall x. g x -> f x
fn g a6
f)

contrazipLifting7 :: Divisible f => (forall x. g x -> f x) -> g a1 -> g a2 -> g a3 -> g a4 -> g a5 -> g a6 -> g a7 -> f (a1, a2, a3, a4, a5, a6, a7)
contrazipLifting7 :: (forall x. g x -> f x)
-> g a1
-> g a2
-> g a3
-> g a4
-> g a5
-> g a6
-> g a7
-> f (a1, a2, a3, a4, a5, a6, a7)
contrazipLifting7 forall x. g x -> f x
fn g a1
a g a2
b g a3
c g a4
d g a5
e g a6
f g a7
g = f a1
-> f a2
-> f a3
-> f a4
-> f a5
-> f a6
-> f a7
-> f (a1, a2, a3, a4, a5, a6, a7)
forall (f :: * -> *) a1 a2 a3 a4 a5 a6 a7.
Divisible f =>
f a1
-> f a2
-> f a3
-> f a4
-> f a5
-> f a6
-> f a7
-> f (a1, a2, a3, a4, a5, a6, a7)
contrazip7 (g a1 -> f a1
forall x. g x -> f x
fn g a1
a) (g a2 -> f a2
forall x. g x -> f x
fn g a2
b) (g a3 -> f a3
forall x. g x -> f x
fn g a3
c) (g a4 -> f a4
forall x. g x -> f x
fn g a4
d) (g a5 -> f a5
forall x. g x -> f x
fn g a5
e) (g a6 -> f a6
forall x. g x -> f x
fn g a6
f) (g a7 -> f a7
forall x. g x -> f x
fn g a7
g)

contrazipLifting8 :: Divisible f => (forall x. g x -> f x) -> g a1 -> g a2 -> g a3 -> g a4 -> g a5 -> g a6 -> g a7 -> g a8 -> f (a1, a2, a3, a4, a5, a6, a7, a8)
contrazipLifting8 :: (forall x. g x -> f x)
-> g a1
-> g a2
-> g a3
-> g a4
-> g a5
-> g a6
-> g a7
-> g a8
-> f (a1, a2, a3, a4, a5, a6, a7, a8)
contrazipLifting8 forall x. g x -> f x
fn g a1
a g a2
b g a3
c g a4
d g a5
e g a6
f g a7
g g a8
h = f a1
-> f a2
-> f a3
-> f a4
-> f a5
-> f a6
-> f a7
-> f a8
-> f (a1, a2, a3, a4, a5, a6, a7, a8)
forall (f :: * -> *) a1 a2 a3 a4 a5 a6 a7 a8.
Divisible f =>
f a1
-> f a2
-> f a3
-> f a4
-> f a5
-> f a6
-> f a7
-> f a8
-> f (a1, a2, a3, a4, a5, a6, a7, a8)
contrazip8 (g a1 -> f a1
forall x. g x -> f x
fn g a1
a) (g a2 -> f a2
forall x. g x -> f x
fn g a2
b) (g a3 -> f a3
forall x. g x -> f x
fn g a3
c) (g a4 -> f a4
forall x. g x -> f x
fn g a4
d) (g a5 -> f a5
forall x. g x -> f x
fn g a5
e) (g a6 -> f a6
forall x. g x -> f x
fn g a6
f) (g a7 -> f a7
forall x. g x -> f x
fn g a7
g) (g a8 -> f a8
forall x. g x -> f x
fn g a8
h)

contrazipLifting9 :: Divisible f => (forall x. g x -> f x) -> g a1 -> g a2 -> g a3 -> g a4 -> g a5 -> g a6 -> g a7 -> g a8 -> g a9 -> f (a1, a2, a3, a4, a5, a6, a7, a8, a9)
contrazipLifting9 :: (forall x. g x -> f x)
-> g a1
-> g a2
-> g a3
-> g a4
-> g a5
-> g a6
-> g a7
-> g a8
-> g a9
-> f (a1, a2, a3, a4, a5, a6, a7, a8, a9)
contrazipLifting9 forall x. g x -> f x
fn g a1
a g a2
b g a3
c g a4
d g a5
e g a6
f g a7
g g a8
h g a9
i = f a1
-> f a2
-> f a3
-> f a4
-> f a5
-> f a6
-> f a7
-> f a8
-> f a9
-> f (a1, a2, a3, a4, a5, a6, a7, a8, a9)
forall (f :: * -> *) a1 a2 a3 a4 a5 a6 a7 a8 a9.
Divisible f =>
f a1
-> f a2
-> f a3
-> f a4
-> f a5
-> f a6
-> f a7
-> f a8
-> f a9
-> f (a1, a2, a3, a4, a5, a6, a7, a8, a9)
contrazip9 (g a1 -> f a1
forall x. g x -> f x
fn g a1
a) (g a2 -> f a2
forall x. g x -> f x
fn g a2
b) (g a3 -> f a3
forall x. g x -> f x
fn g a3
c) (g a4 -> f a4
forall x. g x -> f x
fn g a4
d) (g a5 -> f a5
forall x. g x -> f x
fn g a5
e) (g a6 -> f a6
forall x. g x -> f x
fn g a6
f) (g a7 -> f a7
forall x. g x -> f x
fn g a7
g) (g a8 -> f a8
forall x. g x -> f x
fn g a8
h) (g a9 -> f a9
forall x. g x -> f x
fn g a9
i)

contrazipLifting10 :: Divisible f => (forall x. g x -> f x) -> g a1 -> g a2 -> g a3 -> g a4 -> g a5 -> g a6 -> g a7 -> g a8 -> g a9 -> g a10 -> f (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
contrazipLifting10 :: (forall x. g x -> f x)
-> g a1
-> g a2
-> g a3
-> g a4
-> g a5
-> g a6
-> g a7
-> g a8
-> g a9
-> g a10
-> f (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
contrazipLifting10 forall x. g x -> f x
fn g a1
a g a2
b g a3
c g a4
d g a5
e g a6
f g a7
g g a8
h g a9
i g a10
j = f a1
-> f a2
-> f a3
-> f a4
-> f a5
-> f a6
-> f a7
-> f a8
-> f a9
-> f a10
-> f (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
forall (f :: * -> *) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10.
Divisible f =>
f a1
-> f a2
-> f a3
-> f a4
-> f a5
-> f a6
-> f a7
-> f a8
-> f a9
-> f a10
-> f (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
contrazip10 (g a1 -> f a1
forall x. g x -> f x
fn g a1
a) (g a2 -> f a2
forall x. g x -> f x
fn g a2
b) (g a3 -> f a3
forall x. g x -> f x
fn g a3
c) (g a4 -> f a4
forall x. g x -> f x
fn g a4
d) (g a5 -> f a5
forall x. g x -> f x
fn g a5
e) (g a6 -> f a6
forall x. g x -> f x
fn g a6
f) (g a7 -> f a7
forall x. g x -> f x
fn g a7
g) (g a8 -> f a8
forall x. g x -> f x
fn g a8
h) (g a9 -> f a9
forall x. g x -> f x
fn g a9
i) (g a10 -> f a10
forall x. g x -> f x
fn g a10
j)