packages feed

composition-extra 0.0.0.2 → 1.0.0

raw patch · 9 files changed

+182/−172 lines, 9 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

- Control.Monad.Composition: (==<<) :: Monad m => (a -> b -> m c) -> m b -> a -> m c
- Control.Monad.Composition: (===<<) :: Monad m => (a -> b -> c -> m d) -> m c -> a -> b -> m d
- Control.Monad.Composition: (====<<) :: Monad m => (a -> b -> c -> d -> m e) -> m d -> a -> b -> c -> m e
- Control.Monad.Composition: (=====<<) :: Monad m => (a -> b -> c -> d -> e -> m f) -> m e -> a -> b -> c -> d -> m f
- Control.Monad.Composition: (======<<) :: Monad m => (a -> b -> c -> d -> e -> f -> m g) -> m f -> a -> b -> c -> d -> e -> m g
- Control.Monad.Composition: (>>==) :: Monad m => m b -> (a -> b -> m c) -> a -> m c
- Control.Monad.Composition: (>>===) :: Monad m => m c -> (a -> b -> c -> m d) -> a -> b -> m d
- Control.Monad.Composition: (>>====) :: Monad m => m d -> (a -> b -> c -> d -> m e) -> a -> b -> c -> m e
- Control.Monad.Composition: (>>=====) :: Monad m => m e -> (a -> b -> c -> d -> e -> m f) -> a -> b -> c -> d -> m f
- Control.Monad.Composition: (>>======) :: Monad m => m f -> (a -> b -> c -> d -> e -> f -> m g) -> a -> b -> c -> d -> e -> m g
- Data.Function.Contravariant.Composition: (-.) :: (a -> b) -> (b -> c) -> a -> c
- Data.Function.Contravariant.Composition: (-.:) :: (b -> c) -> (a -> c -> d) -> a -> b -> d
- Data.Function.Contravariant.Composition: (-.:.) :: (c -> d) -> (a -> b -> d -> e) -> a -> b -> c -> e
- Data.Function.Contravariant.Composition: (-.::) :: (d -> e) -> (a -> b -> c -> e -> f) -> a -> b -> c -> d -> f
- Data.Function.Contravariant.Composition: (-.::.) :: (e -> f) -> (a -> b -> c -> d -> f -> g) -> a -> b -> c -> d -> e -> g
- Data.Function.Contravariant.Composition: (-.:::) :: (f -> g) -> (a -> b -> c -> d -> e -> g -> h) -> a -> b -> c -> d -> e -> f -> h
- Data.Function.Contravariant.Composition: (-.:::.) :: (g -> h) -> (a -> b -> c -> d -> e -> f -> h -> i) -> a -> b -> c -> d -> e -> f -> g -> i
- Data.Function.Contravariant.Composition: (-.::::) :: (h -> i) -> (a -> b -> c -> d -> e -> f -> g -> i -> j) -> a -> b -> c -> d -> e -> f -> g -> h -> j
- Data.Function.Contravariant.Composition: (-.::::.) :: (i -> j) -> (a -> b -> c -> d -> e -> f -> g -> h -> j -> k) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> k
- Data.Functor.Composition: (<$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f4 (f3 (f2 (f1 (f0 a)))) -> f4 (f3 (f2 (f1 (f0 b))))
- Data.Functor.Composition: (<$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (a -> b) -> f3 (f2 (f1 (f0 a))) -> f3 (f2 (f1 (f0 b)))
- Data.Functor.Composition: (<$$$>) :: (Functor f0, Functor f1, Functor f2) => (a -> b) -> f2 (f1 (f0 a)) -> f2 (f1 (f0 b))
- Data.Functor.Composition: (<$$>) :: (Functor f0, Functor f1) => (a -> b) -> f1 (f0 a) -> f1 (f0 b)
- Data.Functor.Contravariant.Composition: (<-$$$$$>) :: (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.Composition: (<-$$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2, Contravariant f3) => (a -> b) -> f3 (f2 (f1 (f0 a))) -> f3 (f2 (f1 (f0 b)))
- Data.Functor.Contravariant.Composition: (<-$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2) => (a -> b) -> f2 (f1 (f0 b)) -> f2 (f1 (f0 a))
- Data.Functor.Contravariant.Composition: (<-$$>) :: (Contravariant f0, Contravariant f1) => (a -> b) -> f1 (f0 a) -> f1 (f0 b)
- Data.Functor.Contravariant.Composition: (<-$>) :: Contravariant f => (a -> b) -> f b -> f a
+ Control.Monad.Syntax: (>>==) :: Monad m => m b -> (a -> b -> m c) -> a -> m c
+ Control.Monad.Syntax: (>>===) :: Monad m => m c -> (a -> b -> c -> m d) -> a -> b -> m d
+ Control.Monad.Syntax: (>>====) :: Monad m => m d -> (a -> b -> c -> d -> m e) -> a -> b -> c -> m e
+ Control.Monad.Syntax: (>>=====) :: Monad m => m e -> (a -> b -> c -> d -> e -> m f) -> a -> b -> c -> d -> m f
+ Control.Monad.Syntax: (>>======) :: Monad m => m f -> (a -> b -> c -> d -> e -> f -> m g) -> a -> b -> c -> d -> e -> m g
+ Control.Monad.Syntax.Five: (=.===<<) :: Monad m => (a -> b -> c -> d -> e -> m f) -> m b -> a -> c -> d -> e -> m f
+ Control.Monad.Syntax.Five: (==.==<<) :: Monad m => (a -> b -> c -> d -> e -> m f) -> m c -> a -> b -> d -> e -> m f
+ Control.Monad.Syntax.Five: (===.=<<) :: Monad m => (a -> b -> c -> d -> e -> m f) -> m d -> a -> b -> c -> e -> m f
+ Control.Monad.Syntax.Five: (====.<<) :: Monad m => (a -> b -> c -> d -> e -> m f) -> m e -> a -> b -> c -> d -> m f
+ Control.Monad.Syntax.Five: (=====<<) :: Monad m => (a -> b -> c -> d -> e -> m f) -> m a -> b -> c -> d -> e -> m f
+ Control.Monad.Syntax.Four: (=.==<<) :: Monad m => (a -> b -> c -> d -> m e) -> m b -> a -> c -> d -> m e
+ Control.Monad.Syntax.Four: (==.=<<) :: Monad m => (a -> b -> c -> d -> m e) -> m c -> a -> b -> d -> m e
+ Control.Monad.Syntax.Four: (===.<<) :: Monad m => (a -> b -> c -> d -> m e) -> m d -> a -> b -> c -> m e
+ Control.Monad.Syntax.Four: (====<<) :: Monad m => (a -> b -> c -> d -> m e) -> m a -> b -> c -> d -> m e
+ Control.Monad.Syntax.Six: (=.====<<) :: Monad m => (a -> b -> c -> d -> e -> f -> m g) -> m b -> a -> c -> d -> e -> f -> m g
+ Control.Monad.Syntax.Six: (==.===<<) :: Monad m => (a -> b -> c -> d -> e -> f -> m g) -> m c -> a -> b -> d -> e -> f -> m g
+ Control.Monad.Syntax.Six: (===.==<<) :: Monad m => (a -> b -> c -> d -> e -> f -> m g) -> m d -> a -> b -> c -> e -> f -> m g
+ Control.Monad.Syntax.Six: (====.=<<) :: Monad m => (a -> b -> c -> d -> e -> f -> m g) -> m e -> a -> b -> c -> d -> f -> m g
+ Control.Monad.Syntax.Six: (=====.<<) :: Monad m => (a -> b -> c -> d -> e -> f -> m g) -> m f -> a -> b -> c -> d -> e -> m g
+ Control.Monad.Syntax.Six: (======<<) :: Monad m => (a -> b -> c -> d -> e -> f -> m g) -> m a -> b -> c -> d -> e -> f -> m g
+ Control.Monad.Syntax.Three: (=.=<<) :: Monad m => (a -> b -> c -> m d) -> m b -> a -> c -> m d
+ Control.Monad.Syntax.Three: (==.<<) :: Monad m => (a -> b -> c -> m d) -> m c -> a -> b -> m d
+ Control.Monad.Syntax.Three: (===<<) :: Monad m => (a -> b -> c -> m d) -> m a -> b -> c -> m d
+ Control.Monad.Syntax.Two: (=.<<) :: Monad m => (a -> b -> m c) -> m b -> a -> m c
+ Control.Monad.Syntax.Two: (==<<) :: Monad m => (a -> b -> m c) -> m a -> b -> m c
+ Data.Function.Contravariant.Syntax: (-.) :: (a -> b) -> (b -> c) -> a -> c
+ Data.Function.Contravariant.Syntax: (-.*) :: (b -> c) -> (a -> c -> d) -> a -> b -> d
+ Data.Function.Contravariant.Syntax: (-.**) :: (c -> d) -> (a -> b -> d -> e) -> a -> b -> c -> e
+ Data.Function.Contravariant.Syntax: (-.***) :: (d -> e) -> (a -> b -> c -> e -> f) -> a -> b -> c -> d -> f
+ Data.Function.Contravariant.Syntax: (-.****) :: (e -> f) -> (a -> b -> c -> d -> f -> g) -> a -> b -> c -> d -> e -> g
+ Data.Function.Contravariant.Syntax: (-.*****) :: (f -> g) -> (a -> b -> c -> d -> e -> g -> h) -> a -> b -> c -> d -> e -> f -> h
+ Data.Function.Contravariant.Syntax: (-.******) :: (g -> h) -> (a -> b -> c -> d -> e -> f -> h -> i) -> a -> b -> c -> d -> e -> f -> g -> i
+ Data.Function.Contravariant.Syntax: (-.*******) :: (h -> i) -> (a -> b -> c -> d -> e -> f -> g -> i -> j) -> a -> b -> c -> d -> e -> f -> g -> h -> j
+ Data.Function.Contravariant.Syntax: (-.********) :: (i -> j) -> (a -> b -> c -> d -> e -> f -> g -> h -> j -> k) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> k
+ Data.Function.Contravariant.Syntax: (-.:) :: (b -> c) -> (a -> c -> d) -> a -> b -> d
+ Data.Function.Contravariant.Syntax: (-.:.) :: (c -> d) -> (a -> b -> d -> e) -> a -> b -> c -> e
+ Data.Function.Contravariant.Syntax: (-.::) :: (d -> e) -> (a -> b -> c -> e -> f) -> a -> b -> c -> d -> f
+ Data.Function.Contravariant.Syntax: (-.::.) :: (e -> f) -> (a -> b -> c -> d -> f -> g) -> a -> b -> c -> d -> e -> g
+ Data.Function.Contravariant.Syntax: (-.:::) :: (f -> g) -> (a -> b -> c -> d -> e -> g -> h) -> a -> b -> c -> d -> e -> f -> h
+ Data.Function.Contravariant.Syntax: (-.:::.) :: (g -> h) -> (a -> b -> c -> d -> e -> f -> h -> i) -> a -> b -> c -> d -> e -> f -> g -> i
+ Data.Function.Contravariant.Syntax: (-.::::) :: (h -> i) -> (a -> b -> c -> d -> e -> f -> g -> i -> j) -> a -> b -> c -> d -> e -> f -> g -> h -> j
+ Data.Function.Contravariant.Syntax: (-.::::.) :: (i -> j) -> (a -> b -> c -> d -> e -> f -> g -> h -> j -> k) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> k
+ 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.Functor.Syntax: (<$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f4 (f3 (f2 (f1 (f0 a)))) -> f4 (f3 (f2 (f1 (f0 b))))
+ Data.Functor.Syntax: (<$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (a -> b) -> f3 (f2 (f1 (f0 a))) -> f3 (f2 (f1 (f0 b)))
+ Data.Functor.Syntax: (<$$$>) :: (Functor f0, Functor f1, Functor f2) => (a -> b) -> f2 (f1 (f0 a)) -> f2 (f1 (f0 b))
+ Data.Functor.Syntax: (<$$>) :: (Functor f0, Functor f1) => (a -> b) -> f1 (f0 a) -> f1 (f0 b)

Files

composition-extra.cabal view
@@ -1,5 +1,5 @@ name:                composition-extra-version:             0.0.0.2+version:             1.0.0 synopsis:            Combinators for unorthodox structure composition  license:             BSD3@@ -13,10 +13,10 @@  library   hs-source-dirs:      src-  exposed-modules:     Data.Functor.Composition-                       Data.Functor.Contravariant.Composition-                       Data.Function.Contravariant.Composition-                       Control.Monad.Composition+  exposed-modules:     Data.Functor.Syntax+                       Data.Functor.Contravariant.Syntax+                       Data.Function.Contravariant.Syntax+                       Control.Monad.Syntax   build-depends:       base >= 4.6 && < 5                      , contravariant 
− src/Control/Monad/Composition.hs
@@ -1,62 +0,0 @@-module Control.Monad.Composition where--(>>==) :: Monad m =>-          m b-       -> (a -> b -> m c)-       -> a -> m c-(>>==) mb f a = f a =<< mb--(>>===) :: Monad m =>-           m c-        -> (a -> b -> c -> m d)-        -> a -> b -> m d-(>>===) mc f a b = f a b =<< mc--(>>====) :: Monad m =>-            m d-         -> (a -> b -> c -> d -> m e)-         -> a -> b -> c -> m e-(>>====) md f a b c = f a b c =<< md--(>>=====) :: Monad m =>-             m e-          -> (a -> b -> c -> d -> e -> m f)-          -> a -> b -> c -> d -> m f-(>>=====) me f a b c d = f a b c d =<< me--(>>======) :: Monad m =>-              m f-           -> (a -> b -> c -> d -> e -> f -> m g)-           -> a -> b -> c -> d -> e -> m g-(>>======) mf f a b c d e = f a b c d e =<< mf---(==<<) :: Monad m =>-          (a -> b -> m c)-       -> m b-       -> a -> m c-(==<<) = flip (>>==)--(===<<) :: Monad m =>-           (a -> b -> c -> m d)-        -> m c-        -> a -> b -> m d-(===<<) = flip (>>===)--(====<<) :: Monad m =>-            (a -> b -> c -> d -> m e)-         -> m d-         -> a -> b -> c -> m e-(====<<) = flip (>>====)--(=====<<) :: Monad m =>-             (a -> b -> c -> d -> e -> m f)-          -> m e-          -> a -> b -> c -> d -> m f-(=====<<) = flip (>>=====)--(======<<) :: Monad m =>-              (a -> b -> c -> d -> e -> f -> m g)-           -> m f-           -> a -> b -> c -> d -> e -> m g-(======<<) = flip (>>======)
+ src/Control/Monad/Syntax.hs view
@@ -0,0 +1,56 @@+module Control.Monad.Syntax+  ( module X+  , (>>==)+  , (>>===)+  , (>>====)+  , (>>=====)+  , (>>======)+  ) where++import Control.Monad.Syntax.Two as X+import Control.Monad.Syntax.Three as X+import Control.Monad.Syntax.Four as X+import Control.Monad.Syntax.Five as X+import Control.Monad.Syntax.Six as X++++(>>==) :: Monad m =>+          m b+       -> (a -> b -> m c)+       -> a -> m c+(>>==) mb f a = f a =<< mb++infixr 2 >>==++(>>===) :: Monad m =>+           m c+        -> (a -> b -> c -> m d)+        -> a -> b -> m d+(>>===) mc f a b = f a b =<< mc++infixr 2 >>===++(>>====) :: Monad m =>+            m d+         -> (a -> b -> c -> d -> m e)+         -> a -> b -> c -> m e+(>>====) md f a b c = f a b c =<< md++infixr 2 >>====++(>>=====) :: Monad m =>+             m e+          -> (a -> b -> c -> d -> e -> m f)+          -> a -> b -> c -> d -> m f+(>>=====) me f a b c d = f a b c d =<< me++infixr 2 >>=====++(>>======) :: Monad m =>+              m f+           -> (a -> b -> c -> d -> e -> f -> m g)+           -> a -> b -> c -> d -> e -> m g+(>>======) mf f a b c d e = f a b c d e =<< mf++infixr 2 >>======
− src/Data/Function/Contravariant/Composition.hs
@@ -1,46 +0,0 @@-module Data.Function.Contravariant.Composition where--(-.) :: (a -> b)-     -> (b -> c)-     -> a -> c-(-.) = flip (.)--(-.:) :: (b -> c)-      -> (a -> c -> d)-      -> a -> b -> d-(-.:) p q a b = q a $ p b--(-.:.) :: (c -> d)-       -> (a -> b -> d -> e)-       -> a -> b -> c -> e-(-.:.) p q a b c = q a b $ p c--(-.::) :: (d -> e)-       -> (a -> b -> c -> e -> f)-       -> a -> b -> c -> d -> f-(-.::) p q a b c d = q a b c $ p d--(-.::.) :: (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--(-.:::) :: (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--(-.:::.) :: (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--(-.::::) :: (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--(-.::::.) :: (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
+ src/Data/Function/Contravariant/Syntax.hs view
@@ -0,0 +1,62 @@+module Data.Function.Contravariant.Syntax where++(-.) :: (a -> b)+     -> (b -> c)+     -> a -> c+(-.) = flip (.)++(-.:) :: (b -> c)+      -> (a -> c -> d)+      -> a -> b -> d+(-.:) p q a b = q a $ p b++(-.*) = (-.:)++(-.:.) :: (c -> d)+       -> (a -> b -> d -> e)+       -> a -> b -> c -> e+(-.:.) p q a b c = q a b $ p c++(-.**) = (-.:.)++(-.::) :: (d -> e)+       -> (a -> b -> c -> e -> f)+       -> a -> b -> c -> d -> f+(-.::) p q a b c d = q a b c $ p d++(-.***) = (-.::)++(-.::.) :: (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++(-.****) = (-.::.)++(-.:::) :: (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++(-.*****) = (-.:::)++(-.:::.) :: (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++(-.******) = (-.:::.)++(-.::::) :: (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++(-.*******) = (-.::::)++(-.::::.) :: (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++(-.********) = (-.::::.)
− src/Data/Functor/Composition.hs
@@ -1,26 +0,0 @@-module Data.Functor.Composition where---(<$$>) :: (Functor f0, Functor f1) =>-          (a -> b)-       -> f1 (f0 a)-       -> f1 (f0 b)-(<$$>) = fmap . fmap--(<$$$>) :: (Functor f0, Functor f1, Functor f2) =>-          (a -> b)-       -> f2 (f1 (f0 a))-       -> f2 (f1 (f0 b))-(<$$$>) = fmap . fmap . fmap--(<$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>-          (a -> b)-       -> f3 (f2 (f1 (f0 a)))-       -> f3 (f2 (f1 (f0 b)))-(<$$$$>) = fmap . fmap . fmap . fmap--(<$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) =>-          (a -> b)-       -> f4 (f3 (f2 (f1 (f0 a))))-       -> f4 (f3 (f2 (f1 (f0 b))))-(<$$$$$>) = fmap . fmap . fmap . fmap . fmap
− src/Data/Functor/Contravariant/Composition.hs
@@ -1,33 +0,0 @@-module Data.Functor.Contravariant.Composition where--import Data.Functor.Contravariant--(<-$>) :: Contravariant f =>-          (a -> b)-       -> f b-       -> f a-(<-$>) = contramap--(<-$$>) :: (Contravariant f0, Contravariant f1) =>-          (a -> b)-       -> f1 (f0 a)-       -> f1 (f0 b)-(<-$$>) = contramap . contramap--(<-$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2) =>-          (a -> b)-       -> f2 (f1 (f0 b))-       -> f2 (f1 (f0 a))-(<-$$$>) = contramap . contramap . contramap--(<-$$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2, Contravariant f3) =>-          (a -> b)-       -> f3 (f2 (f1 (f0 a)))-       -> f3 (f2 (f1 (f0 b)))-(<-$$$$>) = contramap . contramap . contramap . contramap--(<-$$$$$>) :: (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
+ src/Data/Functor/Contravariant/Syntax.hs view
@@ -0,0 +1,33 @@+module Data.Functor.Contravariant.Syntax where++import Data.Functor.Contravariant++(<-$>) :: Contravariant f =>+          (a -> b)+       -> f b+       -> f a+(<-$>) = contramap++(<-$$>) :: (Contravariant f0, Contravariant f1) =>+          (a -> b)+       -> f1 (f0 a)+       -> f1 (f0 b)+(<-$$>) = contramap . contramap++(<-$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2) =>+          (a -> b)+       -> f2 (f1 (f0 b))+       -> f2 (f1 (f0 a))+(<-$$$>) = contramap . contramap . contramap++(<-$$$$>) :: (Contravariant f0, Contravariant f1, Contravariant f2, Contravariant f3) =>+          (a -> b)+       -> f3 (f2 (f1 (f0 a)))+       -> f3 (f2 (f1 (f0 b)))+(<-$$$$>) = contramap . contramap . contramap . contramap++(<-$$$$$>) :: (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
+ src/Data/Functor/Syntax.hs view
@@ -0,0 +1,26 @@+module Data.Functor.Syntax where+++(<$$>) :: (Functor f0, Functor f1) =>+          (a -> b)+       -> f1 (f0 a)+       -> f1 (f0 b)+(<$$>) = fmap . fmap++(<$$$>) :: (Functor f0, Functor f1, Functor f2) =>+          (a -> b)+       -> f2 (f1 (f0 a))+       -> f2 (f1 (f0 b))+(<$$$>) = fmap . fmap . fmap++(<$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>+          (a -> b)+       -> f3 (f2 (f1 (f0 a)))+       -> f3 (f2 (f1 (f0 b)))+(<$$$$>) = fmap . fmap . fmap . fmap++(<$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) =>+          (a -> b)+       -> f4 (f3 (f2 (f1 (f0 a))))+       -> f4 (f3 (f2 (f1 (f0 b))))+(<$$$$$>) = fmap . fmap . fmap . fmap . fmap