composition-extra 1.1.0 → 1.2.0
raw patch · 3 files changed
+237/−1 lines, 3 filesdep +compositionPVP ok
version bump matches the API change (PVP)
Dependencies added: composition
API changes (from Hackage documentation)
+ Data.Functor.Syntax: (<.$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (b -> c) -> f3 (f2 (f1 (f0 (a -> b)))) -> f3 (f2 (f1 (f0 (a -> c))))
+ Data.Functor.Syntax: (<.$$$>) :: (Functor f0, Functor f1, Functor f2) => (b -> c) -> f2 (f1 (f0 (a -> b))) -> f2 (f1 (f0 (a -> c)))
+ Data.Functor.Syntax: (<.$$>) :: (Functor f0, Functor f1) => (b -> c) -> f1 (f0 (a -> b)) -> f1 (f0 (a -> c))
+ Data.Functor.Syntax: (<.$>) :: Functor f0 => (b -> c) -> f0 (a -> b) -> f0 (a -> c)
+ Data.Functor.Syntax: (<.*$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (c -> d) -> f3 (f2 (f1 (f0 (a -> b -> c)))) -> f3 (f2 (f1 (f0 (a -> b -> d))))
+ Data.Functor.Syntax: (<.*$$$>) :: (Functor f0, Functor f1, Functor f2) => (c -> d) -> f2 (f1 (f0 (a -> b -> c))) -> f2 (f1 (f0 (a -> b -> d)))
+ Data.Functor.Syntax: (<.*$$>) :: (Functor f0, Functor f1) => (c -> d) -> f1 (f0 (a -> b -> c)) -> f1 (f0 (a -> b -> d))
+ Data.Functor.Syntax: (<.*$>) :: Functor f0 => (c -> d) -> f0 (a -> b -> c) -> f0 (a -> b -> d)
+ Data.Functor.Syntax: (<.**$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (d -> e) -> f3 (f2 (f1 (f0 (a -> b -> c -> d)))) -> f3 (f2 (f1 (f0 (a -> b -> c -> e))))
+ Data.Functor.Syntax: (<.**$$$>) :: (Functor f0, Functor f1, Functor f2) => (d -> e) -> f2 (f1 (f0 (a -> b -> c -> d))) -> f2 (f1 (f0 (a -> b -> c -> e)))
+ Data.Functor.Syntax: (<.**$$>) :: (Functor f0, Functor f1) => (d -> e) -> f1 (f0 (a -> b -> c -> d)) -> f1 (f0 (a -> b -> c -> e))
+ Data.Functor.Syntax: (<.**$>) :: Functor f0 => (d -> e) -> f0 (a -> b -> c -> d) -> f0 (a -> b -> c -> e)
+ 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) => f3 (f2 (f1 (f0 (a -> b)))) -> a -> f3 (f2 (f1 (f0 b)))
+ 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) => f1 (f0 (a -> b)) -> a -> f1 (f0 b)
+ Data.Functor.Syntax: (<~$>) :: Functor f0 => f0 (a -> b) -> a -> 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) => f3 (f2 (f1 (f0 (a -> b -> c)))) -> b -> f3 (f2 (f1 (f0 (a -> c))))
+ 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) => f1 (f0 (a -> b -> c)) -> b -> f1 (f0 (a -> c))
+ Data.Functor.Syntax: (<~~$>) :: Functor f0 => f0 (a -> b -> c) -> 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 -> 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 -> c -> d)))) -> c -> f3 (f2 (f1 (f0 (a -> b -> d))))
+ 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 -> c -> d)) -> c -> f1 (f0 (a -> b -> d))
+ Data.Functor.Syntax: (<~~~$>) :: Functor f0 => f0 (a -> b -> c -> d) -> c -> f0 (a -> b -> d)
Files
- composition-extra.cabal +2/−1
- src/Data/Functor/Contravariant/Syntax.hs +10/−0
- src/Data/Functor/Syntax.hs +225/−0
composition-extra.cabal view
@@ -1,5 +1,5 @@ name: composition-extra-version: 1.1.0+version: 1.2.0 synopsis: Combinators for unorthodox structure composition license: BSD3@@ -29,6 +29,7 @@ Control.Monad.Syntax.Six build-depends: base >= 4.6 && < 5 , contravariant+ , composition source-repository head type: git
src/Data/Functor/Contravariant/Syntax.hs view
@@ -8,26 +8,36 @@ -> 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,26 +1,251 @@ module Data.Functor.Syntax where +import Data.Composition+import Data.Function.Apply ++-- * Nested Mapping+ (<$$>) :: (Functor f0, Functor f1) => (a -> b) -> f1 (f0 a) -> f1 (f0 b) (<$$>) = fmap . fmap +infixr 8 <$$>+ (<$$$>) :: (Functor f0, Functor f1, Functor f2) => (a -> b) -> f2 (f1 (f0 a)) -> f2 (f1 (f0 b)) (<$$$>) = fmap . fmap . fmap +infixr 8 <$$$>+ (<$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (a -> b) -> f3 (f2 (f1 (f0 a))) -> f3 (f2 (f1 (f0 b))) (<$$$$>) = fmap . fmap . fmap . fmap +infixr 8 <$$$$>+ (<$$$$$>) :: (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++infixr 8 <$$$$$>++-- * Nested Application++(<~$>) :: Functor f0 =>+ f0 (a -> b)+ -> a -> f0 b+(<~$>) f x = fmap ($ x) f++infixl 8 <~$>++(<~~$>) :: Functor f0 =>+ f0 (a -> b -> c)+ -> b -> f0 (a -> c)+(<~~$>) f x = fmap (-$ x) f++infixl 8 <~~$>++(<~~~$>) :: Functor f0 =>+ f0 (a -> b -> c -> d)+ -> c -> f0 (a -> b -> d)+(<~~~$>) f x = fmap (--$ x) f++infixl 8 <~~~$>++(<~$$>) :: (Functor f0, Functor f1) =>+ f1 (f0 (a -> b))+ -> a -> f1 (f0 b)+(<~$$>) f x = fmap (<~$> x) f++infixl 8 <~$$>++(<~~$$>) :: (Functor f0, Functor f1) =>+ f1 (f0 (a -> b -> c))+ -> b -> f1 (f0 (a -> c))+(<~~$$>) f x = fmap (<~~$> x) f++infixl 8 <~~$$>++(<~~~$$>) :: (Functor f0, Functor f1) =>+ f1 (f0 (a -> b -> c -> d))+ -> c -> f1 (f0 (a -> b -> d))+(<~~~$$>) f x = fmap (<~~~$> x) f++infixl 8 <~~~$$>+++(<~$$$>) :: (Functor f0, Functor f1, Functor f2) =>+ f2 (f1 (f0 (a -> b)))+ -> a -> f2 (f1 (f0 b))+(<~$$$>) f x = fmap (<~$$> x) f++infixl 8 <~$$$>++(<~~$$$>) :: (Functor f0, Functor f1, Functor f2) =>+ f2 (f1 (f0 (a -> b -> c)))+ -> b -> f2 (f1 (f0 (a -> c)))+(<~~$$$>) f x = fmap (<~~$$> x) f++infixl 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++infixl 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++infixl 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++infixl 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++infixl 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++infixl 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++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++infixl 8 <~~~$$$$$>+++-- * Nested Compositon++(<.$>) :: Functor f0 =>+ (b -> c)+ -> f0 (a -> b)+ -> f0 (a -> c)+f <.$> g = fmap (f .) g++infixr 8 <.$>++(<.*$>) :: Functor f0 =>+ (c -> d)+ -> f0 (a -> b -> c)+ -> f0 (a -> b -> d)+f <.*$> g = fmap (f .*) g++infixr 8 <.*$>++(<.**$>) :: Functor f0 =>+ (d -> e)+ -> f0 (a -> b -> c -> d)+ -> f0 (a -> b -> c -> e)+f <.**$> g = fmap (f .**) g++infixr 8 <.**$>+++(<.$$>) :: (Functor f0, Functor f1) =>+ (b -> c)+ -> f1 (f0 (a -> b))+ -> f1 (f0 (a -> c))+f <.$$> g = (f .) <$$> g++infixr 8 <.$$>++(<.*$$>) :: (Functor f0, Functor f1) =>+ (c -> d)+ -> f1 (f0 (a -> b -> c))+ -> f1 (f0 (a -> b -> d))+f <.*$$> g = (f .*) <$$> g++infixr 8 <.*$$>++(<.**$$>) :: (Functor f0, Functor f1) =>+ (d -> e)+ -> f1 (f0 (a -> b -> c -> d))+ -> f1 (f0 (a -> b -> c -> e))+f <.**$$> g = (f .**) <$$> g++infixr 8 <.**$$>+++(<.$$$>) :: (Functor f0, Functor f1, Functor f2) =>+ (b -> c)+ -> f2 (f1 (f0 (a -> b)))+ -> f2 (f1 (f0 (a -> c)))+f <.$$$> g = (f .) <$$$> g++infixr 8 <.$$$>++(<.*$$$>) :: (Functor f0, Functor f1, Functor f2) =>+ (c -> d)+ -> f2 (f1 (f0 (a -> b -> c)))+ -> f2 (f1 (f0 (a -> b -> d)))+f <.*$$$> g = (f .*) <$$$> g++infixr 8 <.*$$$>++(<.**$$$>) :: (Functor f0, Functor f1, Functor f2) =>+ (d -> e)+ -> f2 (f1 (f0 (a -> b -> c -> d)))+ -> f2 (f1 (f0 (a -> b -> c -> e)))+f <.**$$$> g = (f .**) <$$$> g++infixr 8 <.**$$$>+++(<.$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>+ (b -> c)+ -> f3 (f2 (f1 (f0 (a -> b))))+ -> f3 (f2 (f1 (f0 (a -> c))))+f <.$$$$> g = (f .) <$$$$> g++infixr 8 <.$$$$>++(<.*$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>+ (c -> d)+ -> f3 (f2 (f1 (f0 (a -> b -> c))))+ -> f3 (f2 (f1 (f0 (a -> b -> d))))+f <.*$$$$> g = (f .*) <$$$$> g++infixr 8 <.*$$$$>++(<.**$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) =>+ (d -> e)+ -> f3 (f2 (f1 (f0 (a -> b -> c -> d))))+ -> f3 (f2 (f1 (f0 (a -> b -> c -> e))))+f <.**$$$$> g = (f .**) <$$$$> g++infixr 8 <.**$$$$>