module Data.Function.Apply where

import Data.Function.Slip


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

infixl 8 -$

--$ :: (a -> b -> c -> d) -> c -> a -> b -> d
(--$) = forall {a} {b} {c} {d}. (a -> b -> c -> d) -> c -> a -> b -> d
(<<~>)

infixl 8 --$

---$ :: (a -> b -> c -> d -> e) -> d -> a -> b -> c -> e
(---$) = forall {a} {b} {c} {d} {e}.
(a -> b -> c -> d -> e) -> d -> a -> b -> c -> e
(<<~~>)

infixl 8 ---$

----$ :: (a -> b -> c -> d -> e -> f) -> e -> a -> b -> c -> d -> f
(----$) = forall {a} {b} {c} {d} {e} {f}.
(a -> b -> c -> d -> e -> f) -> e -> a -> b -> c -> d -> f
(<<~~~>)

infixl 8 ----$