Bunch of new derived combinators

Here is a list of added functions:

(^@~) :: (a -> c -> d) -> (a -> b) -> (b -> c) -> a -> d
(~@@^) :: (a -> b) -> (a -> c -> d) -> (b -> c) -> a -> d

(^@^) :: (a -> d -> e) -> (a -> b -> c) -> (c -> d) -> a -> b -> e
(^@@^) :: (a -> b -> c) -> (a -> d -> e) -> (c -> d) -> a -> b -> e

(<~@~>)
    :: (Functor f, Functor g)
    => (c -> d) -> (a -> b) -> (f b -> g c) -> f a -> g d
(<~@@~>)
    :: (Functor f, Functor g)
    => (a -> b) -> (c -> d) -> (f b -> g c) -> f a -> g d

(~@~>) :: Functor f => (c -> d) -> (a -> b) -> (f b -> c) -> f a -> d
(<~@@~) :: Functor f => (a -> b) -> (c -> d) -> (f b -> c) -> f a -> d

(<^@^>)
    :: (Functor f, Functor g)
    => (a -> d -> e)
    -> (a -> b -> c)
    -> (f c -> g d) -> a -> f b -> g e
(<^@@^>)
    :: (Functor f, Functor g)
    => (a -> b -> c)
    -> (a -> d -> e)
    -> (f c -> g d) -> a -> f b -> g e

(<^@^)
    :: Functor f
    => (a -> d -> e)
    -> (a -> b -> c)
    -> (c -> f d) -> a -> b -> f e
(^@@^>)
    :: Functor f
    => (a -> b -> c)
    -> (a -> d -> e)
    -> (c -> f d) -> a -> b -> f e

(^@^>)
    :: Functor f
    => (a -> b -> c)
    -> (a -> d -> e)
    -> (f c -> d) -> a -> f b -> e
(<^@@^)
    :: Functor f
    => (a -> d -> e)
    -> (a -> b -> c)
    -> (f c -> d) -> a -> f b -> e

(<^@~)
    :: Functor f
    => (a -> c -> d) -> (a -> b) -> (b -> f c) -> a -> f d
(~@@^>)
    :: Functor f
    => (a -> b) -> (a -> c -> d) -> (b -> f c) -> a -> f d
Moving things around without code change