composition-extra 1.2.0 → 1.3.0
raw patch · 5 files changed
+264/−96 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Data.Functor.Contravariant.Syntax: (<-$$$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2, Contravariant f3, Contravariant f4) => (a -> b) -> f4 (f3 (f2 (f1 (f0 b)))) -> f4 (f3 (f2 (f1 (f0 a))))
- Data.Functor.Contravariant.Syntax: (<-$$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2, Contravariant f3) => (a -> b) -> f3 (f2 (f1 (f0 a))) -> f3 (f2 (f1 (f0 b)))
- Data.Functor.Contravariant.Syntax: (<-$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2) => (a -> b) -> f2 (f1 (f0 b)) -> f2 (f1 (f0 a))
- Data.Functor.Contravariant.Syntax: (<-$$>) :: (Contravariant f0, Contravariant f1) => (a -> b) -> f1 (f0 a) -> f1 (f0 b)
- Data.Functor.Contravariant.Syntax: (<-$>) :: Contravariant f => (a -> b) -> f b -> f a
+ Data.Function.Syntax: (********.) :: (a -> b -> c -> d -> e -> f -> g -> h -> j -> k) -> (i -> j) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> k
+ Data.Function.Syntax: (*******.) :: (a -> b -> c -> d -> e -> f -> g -> i -> j) -> (h -> i) -> a -> b -> c -> d -> e -> f -> g -> h -> j
+ Data.Function.Syntax: (******.) :: (a -> b -> c -> d -> e -> f -> h -> i) -> (g -> h) -> a -> b -> c -> d -> e -> f -> g -> i
+ Data.Function.Syntax: (*****.) :: (a -> b -> c -> d -> e -> g -> h) -> (f -> g) -> a -> b -> c -> d -> e -> f -> h
+ Data.Function.Syntax: (****.) :: (a -> b -> c -> d -> f -> g) -> (e -> f) -> a -> b -> c -> d -> e -> g
+ Data.Function.Syntax: (***.) :: (a -> b -> c -> e -> f) -> (d -> e) -> a -> b -> c -> d -> f
+ Data.Function.Syntax: (**.) :: (a -> b -> d -> e) -> (c -> d) -> a -> b -> c -> e
+ Data.Function.Syntax: (*.) :: (a -> c -> d) -> (b -> c) -> a -> b -> d
+ Data.Functor.Syntax: (<$$$$$~>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => f4 (f3 (f2 (f1 (f0 (a -> b))))) -> a -> f4 (f3 (f2 (f1 (f0 b))))
+ Data.Functor.Syntax: (<$$$$$~~>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => f4 (f3 (f2 (f1 (f0 (a -> b -> c))))) -> b -> f4 (f3 (f2 (f1 (f0 (a -> c)))))
+ Data.Functor.Syntax: (<$$$$$~~~>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => f4 (f3 (f2 (f1 (f0 (a -> b -> c -> d))))) -> c -> f4 (f3 (f2 (f1 (f0 (a -> b -> d)))))
+ Data.Functor.Syntax: (<$$$$~>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b)))) -> a -> f3 (f2 (f1 (f0 b)))
+ Data.Functor.Syntax: (<$$$$~~>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b -> c)))) -> b -> f3 (f2 (f1 (f0 (a -> c))))
+ Data.Functor.Syntax: (<$$$$~~~>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b -> c -> d)))) -> c -> f3 (f2 (f1 (f0 (a -> b -> d))))
+ Data.Functor.Syntax: (<$$$~>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b))) -> a -> f2 (f1 (f0 b))
+ Data.Functor.Syntax: (<$$$~~>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b -> c))) -> b -> f2 (f1 (f0 (a -> c)))
+ Data.Functor.Syntax: (<$$$~~~>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b -> c -> d))) -> c -> f2 (f1 (f0 (a -> b -> d)))
+ Data.Functor.Syntax: (<$$~>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b)) -> a -> f1 (f0 b)
+ Data.Functor.Syntax: (<$$~~>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b -> c)) -> b -> f1 (f0 (a -> c))
+ Data.Functor.Syntax: (<$$~~~>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b -> c -> d)) -> c -> f1 (f0 (a -> b -> d))
+ Data.Functor.Syntax: (<$~>) :: Functor f0 => f0 (a -> b) -> a -> f0 b
+ Data.Functor.Syntax: (<$~~>) :: Functor f0 => f0 (a -> b -> c) -> b -> f0 (a -> c)
+ Data.Functor.Syntax: (<$~~~>) :: Functor f0 => f0 (a -> b -> c -> d) -> c -> f0 (a -> b -> d)
+ Data.Functor.Syntax: (<*.$>) :: Functor f0 => (a -> c -> d) -> f0 (b -> c) -> f0 (a -> b -> d)
- Data.Functor.Syntax: (<~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => f4 (f3 (f2 (f1 (f0 (a -> b))))) -> a -> f4 (f3 (f2 (f1 (f0 b))))
+ Data.Functor.Syntax: (<~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b -> c) -> f4 (f3 (f2 (f1 (f0 b)))) -> f4 (f3 (f2 (f1 (f0 (a -> c)))))
- Data.Functor.Syntax: (<~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b)))) -> a -> f3 (f2 (f1 (f0 b)))
+ Data.Functor.Syntax: (<~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (a -> b -> c) -> f3 (f2 (f1 (f0 b))) -> f3 (f2 (f1 (f0 (a -> c))))
- Data.Functor.Syntax: (<~$$$>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b))) -> a -> f2 (f1 (f0 b))
+ Data.Functor.Syntax: (<~$$$>) :: (Functor f0, Functor f1, Functor f2) => (a -> b -> c) -> f2 (f1 (f0 b)) -> f2 (f1 (f0 (a -> c)))
- Data.Functor.Syntax: (<~$$>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b)) -> a -> f1 (f0 b)
+ Data.Functor.Syntax: (<~$$>) :: (Functor f0, Functor f1) => (a -> b -> c) -> f1 (f0 b) -> f1 (f0 (a -> c))
- Data.Functor.Syntax: (<~$>) :: Functor f0 => f0 (a -> b) -> a -> f0 b
+ Data.Functor.Syntax: (<~$>) :: Functor f0 => (a -> b -> c) -> f0 b -> f0 (a -> c)
- Data.Functor.Syntax: (<~~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => f4 (f3 (f2 (f1 (f0 (a -> b -> c))))) -> b -> f4 (f3 (f2 (f1 (f0 (a -> c)))))
+ Data.Functor.Syntax: (<~~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b -> c -> d) -> f4 (f3 (f2 (f1 (f0 c)))) -> f4 (f3 (f2 (f1 (f0 (a -> b -> d)))))
- Data.Functor.Syntax: (<~~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b -> c)))) -> b -> f3 (f2 (f1 (f0 (a -> c))))
+ Data.Functor.Syntax: (<~~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (a -> b -> c -> d) -> f3 (f2 (f1 (f0 c))) -> f3 (f2 (f1 (f0 (a -> b -> d))))
- Data.Functor.Syntax: (<~~$$$>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b -> c))) -> b -> f2 (f1 (f0 (a -> c)))
+ Data.Functor.Syntax: (<~~$$$>) :: (Functor f0, Functor f1, Functor f2) => (a -> b -> c -> d) -> f2 (f1 (f0 c)) -> f2 (f1 (f0 (a -> b -> d)))
- Data.Functor.Syntax: (<~~$$>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b -> c)) -> b -> f1 (f0 (a -> c))
+ Data.Functor.Syntax: (<~~$$>) :: (Functor f0, Functor f1) => (a -> b -> c -> d) -> f1 (f0 c) -> f1 (f0 (a -> b -> d))
- Data.Functor.Syntax: (<~~$>) :: Functor f0 => f0 (a -> b -> c) -> b -> f0 (a -> c)
+ Data.Functor.Syntax: (<~~$>) :: Functor f0 => (a -> b -> c -> d) -> f0 c -> f0 (a -> b -> d)
- Data.Functor.Syntax: (<~~~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => f4 (f3 (f2 (f1 (f0 (a -> b -> c -> d))))) -> c -> f4 (f3 (f2 (f1 (f0 (a -> b -> d)))))
+ Data.Functor.Syntax: (<~~~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b -> c -> d -> e) -> f4 (f3 (f2 (f1 (f0 d)))) -> f4 (f3 (f2 (f1 (f0 (a -> b -> c -> e)))))
- Data.Functor.Syntax: (<~~~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b -> c -> d)))) -> c -> f3 (f2 (f1 (f0 (a -> b -> d))))
+ Data.Functor.Syntax: (<~~~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (a -> b -> c -> d -> e) -> f3 (f2 (f1 (f0 d))) -> f3 (f2 (f1 (f0 (a -> b -> c -> e))))
- Data.Functor.Syntax: (<~~~$$$>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b -> c -> d))) -> c -> f2 (f1 (f0 (a -> b -> d)))
+ Data.Functor.Syntax: (<~~~$$$>) :: (Functor f0, Functor f1, Functor f2) => (a -> b -> c -> d -> e) -> f2 (f1 (f0 d)) -> f2 (f1 (f0 (a -> b -> c -> e)))
- Data.Functor.Syntax: (<~~~$$>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b -> c -> d)) -> c -> f1 (f0 (a -> b -> d))
+ Data.Functor.Syntax: (<~~~$$>) :: (Functor f0, Functor f1) => (a -> b -> c -> d -> e) -> f1 (f0 d) -> f1 (f0 (a -> b -> c -> e))
- Data.Functor.Syntax: (<~~~$>) :: Functor f0 => f0 (a -> b -> c -> d) -> c -> f0 (a -> b -> d)
+ Data.Functor.Syntax: (<~~~$>) :: Functor f0 => (a -> b -> c -> d -> e) -> f0 d -> f0 (a -> b -> c -> e)
Files
- composition-extra.cabal +3/−4
- src/Data/Function/Contravariant/Syntax.hs +34/−0
- src/Data/Function/Syntax.hs +51/−0
- src/Data/Functor/Contravariant/Syntax.hs +0/−43
- src/Data/Functor/Syntax.hs +176/−49
composition-extra.cabal view
@@ -1,5 +1,5 @@ name: composition-extra-version: 1.2.0+version: 1.3.0 synopsis: Combinators for unorthodox structure composition license: BSD3@@ -13,14 +13,13 @@ library hs-source-dirs: src- exposed-modules: Data.Functor.Syntax- Data.Functor.Contravariant.Syntax+ exposed-modules: Data.Function.Syntax Data.Function.Contravariant.Syntax- Data.Function.Syntax Data.Function.Apply Data.Function.Flip Data.Function.Slip Data.Function.Twist+ Data.Functor.Syntax Control.Monad.Syntax Control.Monad.Syntax.Two Control.Monad.Syntax.Three
src/Data/Function/Contravariant/Syntax.hs view
@@ -5,58 +5,92 @@ -> a -> c (-.) = flip (.) +infixr 8 -.+ (-.:) :: (b -> c) -> (a -> c -> d) -> a -> b -> d (-.:) p q a b = q a $ p b +infixr 8 -.:+ (-.*) = (-.:) +infixr 8 -.*+ (-.:.) :: (c -> d) -> (a -> b -> d -> e) -> a -> b -> c -> e (-.:.) p q a b c = q a b $ p c +infixr 8 -.:.+ (-.**) = (-.:.) +infixr 8 -.**+ (-.::) :: (d -> e) -> (a -> b -> c -> e -> f) -> a -> b -> c -> d -> f (-.::) p q a b c d = q a b c $ p d +infixr 8 -.::+ (-.***) = (-.::) +infixr 8 -.***+ (-.::.) :: (e -> f) -> (a -> b -> c -> d -> f -> g) -> a -> b -> c -> d -> e -> g (-.::.) p q a b c d e = q a b c d $ p e +infixr 8 -.::.+ (-.****) = (-.::.) +infixr 8 -.****+ (-.:::) :: (f -> g) -> (a -> b -> c -> d -> e -> g -> h) -> a -> b -> c -> d -> e -> f -> h (-.:::) p q a b c d e f = q a b c d e $ p f +infixr 8 -.:::+ (-.*****) = (-.:::) +infixr 8 -.*****+ (-.:::.) :: (g -> h) -> (a -> b -> c -> d -> e -> f -> h -> i) -> a -> b -> c -> d -> e -> f -> g -> i (-.:::.) p q a b c d e f g = q a b c d e f $ p g +infixr 8 -.:::.+ (-.******) = (-.:::.) +infixr 8 -.******+ (-.::::) :: (h -> i) -> (a -> b -> c -> d -> e -> f -> g -> i -> j) -> a -> b -> c -> d -> e -> f -> g -> h -> j (-.::::) p q a b c d e f g h = q a b c d e f g $ p h +infixr 8 -.::::+ (-.*******) = (-.::::) +infixr 8 -.*******+ (-.::::.) :: (i -> j) -> (a -> b -> c -> d -> e -> f -> g -> h -> j -> k) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> k (-.::::.) p q a b c d e f g h i = q a b c d e f g h $ p i +infixr 8 -.::::.+ (-.********) = (-.::::.)++infixr 8 -.********
src/Data/Function/Syntax.hs view
@@ -1,8 +1,59 @@ module Data.Function.Syntax ( module X+ , (*.)+ , (**.)+ , (***.)+ , (****.)+ , (*****.)+ , (******.)+ , (*******.)+ , (********.) ) where +import Data.Composition as X+import Data.Function.Contravariant.Syntax as X import Data.Function.Apply as X import Data.Function.Flip as X import Data.Function.Slip as X import Data.Function.Twist as X+++(*.) :: (a -> c -> d) -> (b -> c) -> a -> b -> d+(*.) = flip (-.*)++infixl 8 *.++(**.) :: (a -> b -> d -> e) -> (c -> d) -> a -> b -> c -> e+(**.) = flip (-.**)++infixl 8 **.++(***.) :: (a -> b -> c -> e -> f) -> (d -> e) -> a -> b -> c -> d -> f+(***.) = flip (-.***)++infixl 8 ***.++(****.) :: (a -> b -> c -> d -> f -> g) -> (e -> f) -> a -> b -> c -> d -> e -> g+(****.) = flip (-.****)++infixl 8 ****.++(*****.) :: (a -> b -> c -> d -> e -> g -> h) -> (f -> g) -> a -> b -> c -> d -> e -> f -> h+(*****.) = flip (-.*****)++infixl 8 *****.++(******.) :: (a -> b -> c -> d -> e -> f -> h -> i) -> (g -> h) -> a -> b -> c -> d -> e -> f -> g -> i+(******.) = flip (-.******)++infixl 8 ******.++(*******.) :: (a -> b -> c -> d -> e -> f -> g -> i -> j) -> (h -> i) -> a -> b -> c -> d -> e -> f -> g -> h -> j+(*******.) = flip (-.*******)++infixl 8 *******.++(********.) :: (a -> b -> c -> d -> e -> f -> g -> h -> j -> k) -> (i -> j) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> k+(********.) = flip (-.********)++infixl 8 ********.
− src/Data/Functor/Contravariant/Syntax.hs
@@ -1,43 +0,0 @@-module Data.Functor.Contravariant.Syntax where--import Data.Functor.Contravariant--(<-$>) :: Contravariant f =>- (a -> b)- -> f b- -> f a-(<-$>) = contramap--infixr 8 <-$>--(<-$$>) :: (Contravariant f0, Contravariant f1) =>- (a -> b)- -> f1 (f0 a)- -> f1 (f0 b)-(<-$$>) = contramap . contramap--infixr 8 <-$$>--(<-$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2) =>- (a -> b)- -> f2 (f1 (f0 b))- -> f2 (f1 (f0 a))-(<-$$$>) = contramap . contramap . contramap--infixr 8 <-$$$>--(<-$$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2, Contravariant f3) =>- (a -> b)- -> f3 (f2 (f1 (f0 a)))- -> f3 (f2 (f1 (f0 b)))-(<-$$$$>) = contramap . contramap . contramap . contramap--infixr 8 <-$$$$>--(<-$$$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2, Contravariant f3, Contravariant f4) =>- (a -> b)- -> f4 (f3 (f2 (f1 (f0 b))))- -> f4 (f3 (f2 (f1 (f0 a))))-(<-$$$$$>) = contramap . contramap . contramap . contramap . contramap--infixr 8 <-$$$$$>
src/Data/Functor/Syntax.hs view
@@ -1,7 +1,6 @@ module Data.Functor.Syntax where -import Data.Composition-import Data.Function.Apply+import Data.Function.Syntax -- * Nested Mapping@@ -40,115 +39,234 @@ -- * Nested Application -(<~$>) :: Functor f0 =>+(<$~>) :: Functor f0 => f0 (a -> b) -> a -> f0 b-(<~$>) f x = fmap ($ x) f+(<$~>) f x = fmap ($ x) f -infixl 8 <~$>+infixl 8 <$~> -(<~~$>) :: Functor f0 =>+(<~$>) :: Functor f0 =>+ (a -> b -> c)+ -> f0 b+ -> f0 (a -> c)+(<~$>) f = fmap (f -$)++infixr 8 <~$>++(<$~~>) :: Functor f0 => f0 (a -> b -> c) -> b -> f0 (a -> c)-(<~~$>) f x = fmap (-$ x) f+(<$~~>) f x = fmap (-$ x) f -infixl 8 <~~$>+infixl 8 <$~~> -(<~~~$>) :: Functor f0 =>+(<~~$>) :: Functor f0 =>+ (a -> b -> c -> d)+ -> f0 c+ -> f0 (a -> b -> d)+(<~~$>) f = fmap (f --$)++infixr 8 <~~$>++(<$~~~>) :: Functor f0 => f0 (a -> b -> c -> d) -> c -> f0 (a -> b -> d)-(<~~~$>) f x = fmap (--$ x) f+(<$~~~>) f x = fmap (--$ x) f -infixl 8 <~~~$>+infixl 8 <$~~~> -(<~$$>) :: (Functor f0, Functor f1) =>+(<~~~$>) :: Functor f0 =>+ (a -> b -> c -> d -> e)+ -> f0 d+ -> f0 (a -> b -> c -> e)+(<~~~$>) f = fmap (f ---$)++infixr 8 <~~~$>++(<$$~>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b)) -> a -> f1 (f0 b)-(<~$$>) f x = fmap (<~$> x) f+(<$$~>) f x = fmap (<$~> x) f -infixl 8 <~$$>+infixl 8 <$$~> -(<~~$$>) :: (Functor f0, Functor f1) =>+(<~$$>) :: (Functor f0, Functor f1) =>+ (a -> b -> c)+ -> f1 (f0 b)+ -> f1 (f0 (a -> c))+(<~$$>) f = fmap (f <~$>)++infixr 8 <~$$>++(<$$~~>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b -> c)) -> b -> f1 (f0 (a -> c))-(<~~$$>) f x = fmap (<~~$> x) f+(<$$~~>) f x = fmap (<$~~> x) f -infixl 8 <~~$$>+infixl 8 <$$~~> -(<~~~$$>) :: (Functor f0, Functor f1) =>+(<~~$$>) :: (Functor f0, Functor f1) =>+ (a -> b -> c -> d)+ -> f1 (f0 c)+ -> f1 (f0 (a -> b -> d))+(<~~$$>) f = fmap (f <~~$>)++infixr 8 <~~$$>++(<$$~~~>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b -> c -> d)) -> c -> f1 (f0 (a -> b -> d))-(<~~~$$>) f x = fmap (<~~~$> x) f+(<$$~~~>) f x = fmap (<$~~~> x) f -infixl 8 <~~~$$>+infixl 8 <$$~~~> +(<~~~$$>) :: (Functor f0, Functor f1) =>+ (a -> b -> c -> d -> e)+ -> f1 (f0 d)+ -> f1 (f0 (a -> b -> c -> e))+(<~~~$$>) f = fmap (f <~~~$>) -(<~$$$>) :: (Functor f0, Functor f1, Functor f2) =>+infixr 8 <~~~$$>+++(<$$$~>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b))) -> a -> f2 (f1 (f0 b))-(<~$$$>) f x = fmap (<~$$> x) f+(<$$$~>) f x = fmap (<$$~> x) f -infixl 8 <~$$$>+infixl 8 <$$$~> -(<~~$$$>) :: (Functor f0, Functor f1, Functor f2) =>+(<~$$$>) :: (Functor f0, Functor f1, Functor f2) =>+ (a -> b -> c)+ -> f2 (f1 (f0 b))+ -> f2 (f1 (f0 (a -> c)))+(<~$$$>) f = fmap (f <~$$>)++infixr 8 <~$$$>++(<$$$~~>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b -> c))) -> b -> f2 (f1 (f0 (a -> c)))-(<~~$$$>) f x = fmap (<~~$$> x) f+(<$$$~~>) f x = fmap (<$$~~> x) f -infixl 8 <~~$$$>+infixl 8 <$$$~~> -(<~~~$$$>) :: (Functor f0, Functor f1, Functor f2) =>+(<~~$$$>) :: (Functor f0, Functor f1, Functor f2) =>+ (a -> b -> c -> d)+ -> f2 (f1 (f0 c))+ -> f2 (f1 (f0 (a -> b -> d)))+(<~~$$$>) f = fmap (f <~~$$>)++infixr 8 <~~$$$>++(<$$$~~~>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b -> c -> d))) -> c -> f2 (f1 (f0 (a -> b -> d)))-(<~~~$$$>) f x = fmap (<~~~$$> x) f+(<$$$~~~>) f x = fmap (<$$~~~> x) f -infixl 8 <~~~$$$>+infixl 8 <$$$~~~> +(<~~~$$$>) :: (Functor f0, Functor f1, Functor f2) =>+ (a -> b -> c -> d -> e)+ -> f2 (f1 (f0 d))+ -> f2 (f1 (f0 (a -> b -> c -> e)))+(<~~~$$$>) f = fmap (f <~~~$$>) -(<~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>+infixr 8 <~~~$$$>+++(<$$$$~>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b)))) -> a -> f3 (f2 (f1 (f0 b)))-(<~$$$$>) f x = fmap (<~$$$> x) f+(<$$$$~>) f x = fmap (<$$$~> x) f -infixl 8 <~$$$$>+infixl 8 <$$$$~> -(<~~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>+(<~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>+ (a -> b -> c)+ -> f3 (f2 (f1 (f0 b)))+ -> f3 (f2 (f1 (f0 (a -> c))))+(<~$$$$>) f = fmap (f <~$$$>)++infixr 8 <~$$$$>++(<$$$$~~>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b -> c)))) -> b -> f3 (f2 (f1 (f0 (a -> c))))-(<~~$$$$>) f x = fmap (<~~$$$> x) f+(<$$$$~~>) f x = fmap (<$$$~~> x) f -infixl 8 <~~$$$$>+infixl 8 <$$$$~~> -(<~~~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>+(<~~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>+ (a -> b -> c -> d)+ -> f3 (f2 (f1 (f0 c)))+ -> f3 (f2 (f1 (f0 (a -> b -> d))))+(<~~$$$$>) f = fmap (f <~~$$$>)++infixr 8 <~~$$$$>++(<$$$$~~~>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b -> c -> d)))) -> c -> f3 (f2 (f1 (f0 (a -> b -> d))))-(<~~~$$$$>) f x = fmap (<~~~$$$> x) f+(<$$$$~~~>) f x = fmap (<$$$~~~> x) f -infixl 8 <~~~$$$$>+infixl 8 <$$$$~~~> +(<~~~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>+ (a -> b -> c -> d -> e)+ -> f3 (f2 (f1 (f0 d)))+ -> f3 (f2 (f1 (f0 (a -> b -> c -> e))))+(<~~~$$$$>) f = fmap (f <~~~$$$>) -(<~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) =>+infixr 8 <~~~$$$$>+++(<$$$$$~>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => f4 (f3 (f2 (f1 (f0 (a -> b))))) -> a -> f4 (f3 (f2 (f1 (f0 b))))-(<~$$$$$>) f x = fmap (<~$$$$> x) f+(<$$$$$~>) f x = fmap (<$$$$~> x) f -infixl 8 <~$$$$$>+infixl 8 <$$$$$~> -(<~~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) =>+(<~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) =>+ (a -> b -> c)+ -> f4 (f3 (f2 (f1 (f0 b))))+ -> f4 (f3 (f2 (f1 (f0 (a -> c)))))+(<~$$$$$>) f = fmap (f <~$$$$>)++infixr 8 <~$$$$$>++(<$$$$$~~>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => f4 (f3 (f2 (f1 (f0 (a -> b -> c))))) -> b -> f4 (f3 (f2 (f1 (f0 (a -> c)))))-(<~~$$$$$>) f x = fmap (<~~$$$$> x) f+(<$$$$$~~>) f x = fmap (<$$$$~~> x) f -infixl 8 <~~$$$$$>+infixl 8 <$$$$$~~> -(<~~~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) =>- f4 (f3 (f2 (f1 (f0 (a -> b -> c -> d)))))- -> c -> f4 (f3 (f2 (f1 (f0 (a -> b -> d)))))-(<~~~$$$$$>) f x = fmap (<~~~$$$$> x) f+(<~~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) =>+ (a -> b -> c -> d)+ -> f4 (f3 (f2 (f1 (f0 c))))+ -> f4 (f3 (f2 (f1 (f0 (a -> b -> d)))))+(<~~$$$$$>) f = fmap (f <~~$$$$>) -infixl 8 <~~~$$$$$>+infixr 8 <~~$$$$$> +(<$$$$$~~~>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) =>+ f4 (f3 (f2 (f1 (f0 (a -> b -> c -> d)))))+ -> c -> f4 (f3 (f2 (f1 (f0 (a -> b -> d)))))+(<$$$$$~~~>) f x = fmap (<$$$$~~~> x) f +infixl 8 <$$$$$~~~>++(<~~~$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) =>+ (a -> b -> c -> d -> e)+ -> f4 (f3 (f2 (f1 (f0 d))))+ -> f4 (f3 (f2 (f1 (f0 (a -> b -> c -> e)))))+(<~~~$$$$$>) f = fmap (f <~~~$$$$>)++infixr 8 <~~~$$$$$>+ -- * Nested Compositon (<.$>) :: Functor f0 =>@@ -166,6 +284,15 @@ f <.*$> g = fmap (f .*) g infixr 8 <.*$>++-- TODO: Expand+(<*.$>) :: Functor f0 =>+ (a -> c -> d)+ -> f0 (b -> c)+ -> f0 (a -> b -> d)+f <*.$> g = fmap (f *.) g++infixr 8 <*.$> (<.**$>) :: Functor f0 => (d -> e)