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 +5/−5
- src/Control/Monad/Composition.hs +0/−62
- src/Control/Monad/Syntax.hs +56/−0
- src/Data/Function/Contravariant/Composition.hs +0/−46
- src/Data/Function/Contravariant/Syntax.hs +62/−0
- src/Data/Functor/Composition.hs +0/−26
- src/Data/Functor/Contravariant/Composition.hs +0/−33
- src/Data/Functor/Contravariant/Syntax.hs +33/−0
- src/Data/Functor/Syntax.hs +26/−0
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