composition-extra-1.3.0: Combinators for unorthodox structure composition

Safe HaskellSafe
LanguageHaskell98

Data.Functor.Syntax

Contents

Synopsis

Nested Mapping

(<$$>) :: (Functor f0, Functor f1) => (a -> b) -> f1 (f0 a) -> f1 (f0 b) infixr 8 Source

(<$$$>) :: (Functor f0, Functor f1, Functor f2) => (a -> b) -> f2 (f1 (f0 a)) -> f2 (f1 (f0 b)) infixr 8 Source

(<$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (a -> b) -> f3 (f2 (f1 (f0 a))) -> f3 (f2 (f1 (f0 b))) infixr 8 Source

(<$$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f4 (f3 (f2 (f1 (f0 a)))) -> f4 (f3 (f2 (f1 (f0 b)))) infixr 8 Source

Nested Application

(<$~>) :: Functor f0 => f0 (a -> b) -> a -> f0 b infixl 8 Source

(<~$>) :: Functor f0 => (a -> b -> c) -> f0 b -> f0 (a -> c) infixr 8 Source

(<$~~>) :: Functor f0 => f0 (a -> b -> c) -> b -> f0 (a -> c) infixl 8 Source

(<~~$>) :: Functor f0 => (a -> b -> c -> d) -> f0 c -> f0 (a -> b -> d) infixr 8 Source

(<$~~~>) :: Functor f0 => f0 (a -> b -> c -> d) -> c -> f0 (a -> b -> d) infixl 8 Source

(<~~~$>) :: Functor f0 => (a -> b -> c -> d -> e) -> f0 d -> f0 (a -> b -> c -> e) infixr 8 Source

(<$$~>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b)) -> a -> f1 (f0 b) infixl 8 Source

(<~$$>) :: (Functor f0, Functor f1) => (a -> b -> c) -> f1 (f0 b) -> f1 (f0 (a -> c)) infixr 8 Source

(<$$~~>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b -> c)) -> b -> f1 (f0 (a -> c)) infixl 8 Source

(<~~$$>) :: (Functor f0, Functor f1) => (a -> b -> c -> d) -> f1 (f0 c) -> f1 (f0 (a -> b -> d)) infixr 8 Source

(<$$~~~>) :: (Functor f0, Functor f1) => f1 (f0 (a -> b -> c -> d)) -> c -> f1 (f0 (a -> b -> d)) infixl 8 Source

(<~~~$$>) :: (Functor f0, Functor f1) => (a -> b -> c -> d -> e) -> f1 (f0 d) -> f1 (f0 (a -> b -> c -> e)) infixr 8 Source

(<$$$~>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b))) -> a -> f2 (f1 (f0 b)) infixl 8 Source

(<~$$$>) :: (Functor f0, Functor f1, Functor f2) => (a -> b -> c) -> f2 (f1 (f0 b)) -> f2 (f1 (f0 (a -> c))) infixr 8 Source

(<$$$~~>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b -> c))) -> b -> f2 (f1 (f0 (a -> c))) infixl 8 Source

(<~~$$$>) :: (Functor f0, Functor f1, Functor f2) => (a -> b -> c -> d) -> f2 (f1 (f0 c)) -> f2 (f1 (f0 (a -> b -> d))) infixr 8 Source

(<$$$~~~>) :: (Functor f0, Functor f1, Functor f2) => f2 (f1 (f0 (a -> b -> c -> d))) -> c -> f2 (f1 (f0 (a -> b -> d))) infixl 8 Source

(<~~~$$$>) :: (Functor f0, Functor f1, Functor f2) => (a -> b -> c -> d -> e) -> f2 (f1 (f0 d)) -> f2 (f1 (f0 (a -> b -> c -> e))) infixr 8 Source

(<$$$$~>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b)))) -> a -> f3 (f2 (f1 (f0 b))) infixl 8 Source

(<~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (a -> b -> c) -> f3 (f2 (f1 (f0 b))) -> f3 (f2 (f1 (f0 (a -> c)))) infixr 8 Source

(<$$$$~~>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b -> c)))) -> b -> f3 (f2 (f1 (f0 (a -> c)))) infixl 8 Source

(<~~$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (a -> b -> c -> d) -> f3 (f2 (f1 (f0 c))) -> f3 (f2 (f1 (f0 (a -> b -> d)))) infixr 8 Source

(<$$$$~~~>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => f3 (f2 (f1 (f0 (a -> b -> c -> d)))) -> c -> f3 (f2 (f1 (f0 (a -> b -> d)))) infixl 8 Source

(<~~~$$$$>) :: (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)))) infixr 8 Source

(<$$$$$~>) :: (Functor f0, Functor f1, Functor f2, Functor f3, Functor f4) => f4 (f3 (f2 (f1 (f0 (a -> b))))) -> a -> f4 (f3 (f2 (f1 (f0 b)))) infixl 8 Source

(<~$$$$$>) :: (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))))) infixr 8 Source

(<$$$$$~~>) :: (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))))) infixl 8 Source

(<~~$$$$$>) :: (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))))) infixr 8 Source

(<$$$$$~~~>) :: (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))))) infixl 8 Source

(<~~~$$$$$>) :: (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))))) infixr 8 Source

Nested Compositon

(<.$>) :: Functor f0 => (b -> c) -> f0 (a -> b) -> f0 (a -> c) infixr 8 Source

(<.*$>) :: Functor f0 => (c -> d) -> f0 (a -> b -> c) -> f0 (a -> b -> d) infixr 8 Source

(<*.$>) :: Functor f0 => (a -> c -> d) -> f0 (b -> c) -> f0 (a -> b -> d) infixr 8 Source

(<.**$>) :: Functor f0 => (d -> e) -> f0 (a -> b -> c -> d) -> f0 (a -> b -> c -> e) infixr 8 Source

(<.$$>) :: (Functor f0, Functor f1) => (b -> c) -> f1 (f0 (a -> b)) -> f1 (f0 (a -> c)) infixr 8 Source

(<.*$$>) :: (Functor f0, Functor f1) => (c -> d) -> f1 (f0 (a -> b -> c)) -> f1 (f0 (a -> b -> d)) infixr 8 Source

(<.**$$>) :: (Functor f0, Functor f1) => (d -> e) -> f1 (f0 (a -> b -> c -> d)) -> f1 (f0 (a -> b -> c -> e)) infixr 8 Source

(<.$$$>) :: (Functor f0, Functor f1, Functor f2) => (b -> c) -> f2 (f1 (f0 (a -> b))) -> f2 (f1 (f0 (a -> c))) infixr 8 Source

(<.*$$$>) :: (Functor f0, Functor f1, Functor f2) => (c -> d) -> f2 (f1 (f0 (a -> b -> c))) -> f2 (f1 (f0 (a -> b -> d))) infixr 8 Source

(<.**$$$>) :: (Functor f0, Functor f1, Functor f2) => (d -> e) -> f2 (f1 (f0 (a -> b -> c -> d))) -> f2 (f1 (f0 (a -> b -> c -> e))) infixr 8 Source

(<.$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (b -> c) -> f3 (f2 (f1 (f0 (a -> b)))) -> f3 (f2 (f1 (f0 (a -> c)))) infixr 8 Source

(<.*$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (c -> d) -> f3 (f2 (f1 (f0 (a -> b -> c)))) -> f3 (f2 (f1 (f0 (a -> b -> d)))) infixr 8 Source

(<.**$$$$>) :: (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)))) infixr 8 Source