module Data.Function.Flip where


(<->) :: (a -> b -> c) -> b -> a -> c
<-> :: forall a b c. (a -> b -> c) -> b -> a -> c
(<->) = forall a b c. (a -> b -> c) -> b -> a -> c
flip

infixl 8 <->


flip3 :: (a -> b -> c -> d) -> c -> b -> a -> d
flip3 :: forall a b c d. (a -> b -> c -> d) -> c -> b -> a -> d
flip3 a -> b -> c -> d
f c
c b
b a
a = a -> b -> c -> d
f a
a b
b c
c

<--> :: (a -> b -> c -> d) -> c -> b -> a -> d
(<-->) = forall a b c d. (a -> b -> c -> d) -> c -> b -> a -> d
flip3

infixl 8 <-->


flip4  :: (a -> b -> c -> d -> e) -> d -> b -> c -> a -> e
flip4 :: forall a b c d e. (a -> b -> c -> d -> e) -> d -> b -> c -> a -> e
flip4 a -> b -> c -> d -> e
f d
d b
b c
c a
a = a -> b -> c -> d -> e
f a
a b
b c
c d
d

<---> :: (a -> b -> c -> d -> e) -> d -> b -> c -> a -> e
(<--->) = forall a b c d e. (a -> b -> c -> d -> e) -> d -> b -> c -> a -> e
flip4

infixl 8 <--->


flip5   :: (a -> b -> c -> d -> e -> f) -> e -> b -> c -> d -> a -> f
flip5 :: forall a b c d e f.
(a -> b -> c -> d -> e -> f) -> e -> b -> c -> d -> a -> f
flip5 a -> b -> c -> d -> e -> f
f e
e b
b c
c d
d a
a = a -> b -> c -> d -> e -> f
f a
a b
b c
c d
d e
e

<----> :: (a -> b -> c -> d -> e -> f) -> e -> b -> c -> d -> a -> f
(<---->) = forall a b c d e f.
(a -> b -> c -> d -> e -> f) -> e -> b -> c -> d -> a -> f
flip5

infixl 8 <---->