functor-utils-1.17.1: Collection of functor utilities, providing handy operators, like generalization of (.).

Safe HaskellNone
LanguageHaskell2010

Data.Functor.Utils

Synopsis

Documentation

type family Functors lst :: Constraint where ... Source #

Equations

Functors '[] = () 
Functors (f ': fs) = (Functor f, Functors fs) 

type family Applicatives lst :: Constraint where ... Source #

Equations

Applicatives '[] = () 
Applicatives (f ': fs) = (Applicative f, Applicatives fs) 

fmap0 :: (a -> b) -> a -> b Source #

(.) :: Functor f1 => (a -> b) -> f1 a -> f1 b infixr 9 Source #

(∘) :: Functor f1 => (a -> b) -> f1 a -> f1 b infixr 9 Source #

fmap2 :: Functors '[f1, f2] => (a -> b) -> f2 (f1 a) -> f2 (f1 b) Source #

(.:) :: Functors '[f1, f2] => (a -> b) -> f2 (f1 a) -> f2 (f1 b) infixr 8 Source #

(<<$>>) :: Functors '[f1, f2] => (a -> b) -> f2 (f1 a) -> f2 (f1 b) infixl 4 Source #

(∘∘) :: Functors '[f1, f2] => (a -> b) -> f2 (f1 a) -> f2 (f1 b) infixr 8 Source #

fmap3 :: Functors '[f1, f2, f3] => (a -> b) -> f3 (f2 (f1 a)) -> f3 (f2 (f1 b)) Source #

(.:.) :: Functors '[f1, f2, f3] => (a -> b) -> f3 (f2 (f1 a)) -> f3 (f2 (f1 b)) infixr 8 Source #

(<<<$>>>) :: Functors '[f1, f2, f3] => (a -> b) -> f3 (f2 (f1 a)) -> f3 (f2 (f1 b)) infixl 4 Source #

(∘∘∘) :: Functors '[f1, f2, f3] => (a -> b) -> f3 (f2 (f1 a)) -> f3 (f2 (f1 b)) infixr 8 Source #

fmap4 :: Functors '[f1, f2, f3, f4] => (a -> b) -> f4 (f3 (f2 (f1 a))) -> f4 (f3 (f2 (f1 b))) Source #

(.::) :: Functors '[f1, f2, f3, f4] => (a -> b) -> f4 (f3 (f2 (f1 a))) -> f4 (f3 (f2 (f1 b))) infixr 8 Source #

(<<<<$>>>>) :: Functors '[f1, f2, f3, f4] => (a -> b) -> f4 (f3 (f2 (f1 a))) -> f4 (f3 (f2 (f1 b))) infixl 4 Source #

(∘∘∘∘) :: Functors '[f1, f2, f3, f4] => (a -> b) -> f4 (f3 (f2 (f1 a))) -> f4 (f3 (f2 (f1 b))) infixr 8 Source #

fmap5 :: Functors '[f1, f2, f3, f4, f5] => (a -> b) -> f5 (f4 (f3 (f2 (f1 a)))) -> f5 (f4 (f3 (f2 (f1 b)))) Source #

(.::.) :: Functors '[f1, f2, f3, f4, f5] => (a -> b) -> f5 (f4 (f3 (f2 (f1 a)))) -> f5 (f4 (f3 (f2 (f1 b)))) infixr 8 Source #

(<<<<<$>>>>>) :: Functors '[f1, f2, f3, f4, f5] => (a -> b) -> f5 (f4 (f3 (f2 (f1 a)))) -> f5 (f4 (f3 (f2 (f1 b)))) infixl 4 Source #

(∘∘∘∘∘) :: Functors '[f1, f2, f3, f4, f5] => (a -> b) -> f5 (f4 (f3 (f2 (f1 a)))) -> f5 (f4 (f3 (f2 (f1 b)))) infixr 8 Source #

fmap1 :: Functor f => (a -> b) -> f a -> f b Source #

(<<*>>) :: Applicatives '[f1, f2] => f2 (f1 (a -> b)) -> f2 (f1 a) -> f2 (f1 b) infixl 4 Source #

(<<<*>>>) :: Applicatives '[f1, f2, f3] => f3 (f2 (f1 (a -> b))) -> f3 (f2 (f1 a)) -> f3 (f2 (f1 b)) infixl 4 Source #

(<<<<*>>>>) :: Applicatives '[f1, f2, f3, f4] => f4 (f3 (f2 (f1 (a -> b)))) -> f4 (f3 (f2 (f1 a))) -> f4 (f3 (f2 (f1 b))) infixl 4 Source #

(<<<<<*>>>>>) :: Applicatives '[f1, f2, f3, f4, f5] => f5 (f4 (f3 (f2 (f1 (a -> b))))) -> f5 (f4 (f3 (f2 (f1 a)))) -> f5 (f4 (f3 (f2 (f1 b)))) infixl 4 Source #

(|$) :: (a -> b) -> a -> (a, b) infixl 4 Source #

($|) :: (a -> b) -> a -> (b, a) infixl 4 Source #

(<|$>) :: Functor f => (a -> b) -> f a -> f (a, b) infixl 4 Source #

(<$|>) :: Functor f => (a -> b) -> f a -> f (b, a) infixl 4 Source #

composed :: Iso' (f (g a)) (Compose f g a) Source #

nested :: (Functor f2, Functor f1) => (f2 (Compose * * f3 g1 a1) -> f1 (Compose * * f4 g2 a2)) -> f2 (f3 (g1 a1)) -> f1 (f4 (g2 a2)) Source #

following functions are usefull when operating on nested structures with lenses, for example | given function foo :: a -> m (n a) and a lens l :: Lens' x a, we can use | nested l foo to get signature of x -> m (n x)