composition-extra-2.0.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 #

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

(<$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (a -> b) -> f3 (f2 (f1 (f0 a))) -> f3 (f2 (f1 (f0 b))) 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)))) infixr 8 #

Nested Application

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(<~~$$$$>) :: (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 #

(<$$$$~~~>) :: (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 #

(<~~~$$$$>) :: (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 #

(<$$$$$~>) :: (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 #

(<~$$$$$>) :: (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 #

(<$$$$$~~>) :: (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 #

(<~~$$$$$>) :: (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 #

(<$$$$$~~~>) :: (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 #

(<~~~$$$$$>) :: (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 #

Nested Compositon

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

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

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

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

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

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

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

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

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

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

(<.$$$$>) :: (Functor f0, Functor f1, Functor f2, Functor f3) => (b -> c) -> f3 (f2 (f1 (f0 (a -> b)))) -> f3 (f2 (f1 (f0 (a -> c)))) 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)))) 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)))) infixr 8 #