{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeOperators #-}
module Data.SOP.Strict (
module Data.SOP.Strict.NP
, module Data.SOP.Strict.NS
, fn_5
, module Data.SOP.Classes
) where
import Data.SOP.Classes
import Data.SOP.Strict.NP
import Data.SOP.Strict.NS
fn_5 :: (f0 a -> f1 a -> f2 a -> f3 a -> f4 a -> f5 a)
-> (f0 -.-> f1 -.-> f2 -.-> f3 -.-> f4 -.-> f5) a
fn_5 :: forall {k} (f0 :: k -> *) (a :: k) (f1 :: k -> *) (f2 :: k -> *)
(f3 :: k -> *) (f4 :: k -> *) (f5 :: k -> *).
(f0 a -> f1 a -> f2 a -> f3 a -> f4 a -> f5 a)
-> (-.->) f0 (f1 -.-> (f2 -.-> (f3 -.-> (f4 -.-> f5)))) a
fn_5 f0 a -> f1 a -> f2 a -> f3 a -> f4 a -> f5 a
f = (f0 a -> (-.->) f1 (f2 -.-> (f3 -.-> (f4 -.-> f5))) a)
-> (-.->) f0 (f1 -.-> (f2 -.-> (f3 -.-> (f4 -.-> f5)))) a
forall {k} (f :: k -> *) (g :: k -> *) (a :: k).
(f a -> g a) -> (-.->) f g a
Fn ((f0 a -> (-.->) f1 (f2 -.-> (f3 -.-> (f4 -.-> f5))) a)
-> (-.->) f0 (f1 -.-> (f2 -.-> (f3 -.-> (f4 -.-> f5)))) a)
-> (f0 a -> (-.->) f1 (f2 -.-> (f3 -.-> (f4 -.-> f5))) a)
-> (-.->) f0 (f1 -.-> (f2 -.-> (f3 -.-> (f4 -.-> f5)))) a
forall a b. (a -> b) -> a -> b
$ \f0 a
x0 ->
(f1 a -> (-.->) f2 (f3 -.-> (f4 -.-> f5)) a)
-> (-.->) f1 (f2 -.-> (f3 -.-> (f4 -.-> f5))) a
forall {k} (f :: k -> *) (g :: k -> *) (a :: k).
(f a -> g a) -> (-.->) f g a
Fn ((f1 a -> (-.->) f2 (f3 -.-> (f4 -.-> f5)) a)
-> (-.->) f1 (f2 -.-> (f3 -.-> (f4 -.-> f5))) a)
-> (f1 a -> (-.->) f2 (f3 -.-> (f4 -.-> f5)) a)
-> (-.->) f1 (f2 -.-> (f3 -.-> (f4 -.-> f5))) a
forall a b. (a -> b) -> a -> b
$ \f1 a
x1 ->
(f2 a -> (-.->) f3 (f4 -.-> f5) a)
-> (-.->) f2 (f3 -.-> (f4 -.-> f5)) a
forall {k} (f :: k -> *) (g :: k -> *) (a :: k).
(f a -> g a) -> (-.->) f g a
Fn ((f2 a -> (-.->) f3 (f4 -.-> f5) a)
-> (-.->) f2 (f3 -.-> (f4 -.-> f5)) a)
-> (f2 a -> (-.->) f3 (f4 -.-> f5) a)
-> (-.->) f2 (f3 -.-> (f4 -.-> f5)) a
forall a b. (a -> b) -> a -> b
$ \f2 a
x2 ->
(f3 a -> (-.->) f4 f5 a) -> (-.->) f3 (f4 -.-> f5) a
forall {k} (f :: k -> *) (g :: k -> *) (a :: k).
(f a -> g a) -> (-.->) f g a
Fn ((f3 a -> (-.->) f4 f5 a) -> (-.->) f3 (f4 -.-> f5) a)
-> (f3 a -> (-.->) f4 f5 a) -> (-.->) f3 (f4 -.-> f5) a
forall a b. (a -> b) -> a -> b
$ \f3 a
x3 ->
(f4 a -> f5 a) -> (-.->) f4 f5 a
forall {k} (f :: k -> *) (g :: k -> *) (a :: k).
(f a -> g a) -> (-.->) f g a
Fn ((f4 a -> f5 a) -> (-.->) f4 f5 a)
-> (f4 a -> f5 a) -> (-.->) f4 f5 a
forall a b. (a -> b) -> a -> b
$ \f4 a
x4 ->
f0 a -> f1 a -> f2 a -> f3 a -> f4 a -> f5 a
f f0 a
x0 f1 a
x1 f2 a
x2 f3 a
x3 f4 a
x4