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

Safe HaskellNone
LanguageHaskell2010

Data.Functor.Utils

Synopsis

Documentation

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

fmap2 :: (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) Source

fmap3 :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) Source

fmap4 :: (Functor f, Functor f1, Functor f2, Functor f3) => (a -> b) -> f (f1 (f2 (f3 a))) -> f (f1 (f2 (f3 b))) Source

fmap5 :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f (f1 (f2 (f3 (f4 a)))) -> f (f1 (f2 (f3 (f4 b)))) Source

fmap6 :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 a))))) -> f (f1 (f2 (f3 (f4 (f5 b))))) Source

fmap7 :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5, Functor f6) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 (f6 a)))))) -> f (f1 (f2 (f3 (f4 (f5 (f6 b)))))) Source

fmap8 :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5, Functor f6, Functor f7) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 a))))))) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 b))))))) Source

fmap9 :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5, Functor f6, Functor f7, Functor f8) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 (f8 a)))))))) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 (f8 b)))))))) Source

dot1 :: Functor f => (a -> b) -> f a -> f b Source

dot2 :: (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) Source

dot3 :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) Source

dot4 :: (Functor f, Functor f1, Functor f2, Functor f3) => (a -> b) -> f (f1 (f2 (f3 a))) -> f (f1 (f2 (f3 b))) Source

dot5 :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f (f1 (f2 (f3 (f4 a)))) -> f (f1 (f2 (f3 (f4 b)))) Source

dot6 :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 a))))) -> f (f1 (f2 (f3 (f4 (f5 b))))) Source

dot7 :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5, Functor f6) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 (f6 a)))))) -> f (f1 (f2 (f3 (f4 (f5 (f6 b)))))) Source

dot8 :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5, Functor f6, Functor f7) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 a))))))) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 b))))))) Source

dot9 :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5, Functor f6, Functor f7, Functor f8) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 (f8 a)))))))) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 (f8 b)))))))) Source

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

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

(∘∘∘) :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) infixr 9 Source

(∘∘∘∘) :: (Functor f, Functor f1, Functor f2, Functor f3) => (a -> b) -> f (f1 (f2 (f3 a))) -> f (f1 (f2 (f3 b))) infixr 9 Source

(∘∘∘∘∘) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f (f1 (f2 (f3 (f4 a)))) -> f (f1 (f2 (f3 (f4 b)))) infixr 9 Source

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

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

(.:.) :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) infixr 9 Source

(.::) :: (Functor f, Functor f1, Functor f2, Functor f3) => (a -> b) -> f (f1 (f2 (f3 a))) -> f (f1 (f2 (f3 b))) infixr 9 Source

(.::.) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f (f1 (f2 (f3 (f4 a)))) -> f (f1 (f2 (f3 (f4 b)))) infixr 9 Source

(.:::) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 a))))) -> f (f1 (f2 (f3 (f4 (f5 b))))) infixr 9 Source

(.:::.) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5, Functor f6) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 (f6 a)))))) -> f (f1 (f2 (f3 (f4 (f5 (f6 b)))))) infixr 9 Source

(.::::) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5, Functor f6, Functor f7) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 a))))))) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 b))))))) infixr 9 Source

(.::::.) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5, Functor f6, Functor f7, Functor f8) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 (f8 a)))))))) -> f (f1 (f2 (f3 (f4 (f5 (f6 (f7 (f8 b)))))))) infixr 9 Source

(<∘>) :: (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) infixl 4 Source

(<∘∘>) :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) infixl 4 Source

(<∘∘∘>) :: (Functor f, Functor f1, Functor f2, Functor f3) => (a -> b) -> f (f1 (f2 (f3 a))) -> f (f1 (f2 (f3 b))) infixl 4 Source

(<∘∘∘∘>) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f (f1 (f2 (f3 (f4 a)))) -> f (f1 (f2 (f3 (f4 b)))) infixl 4 Source

(<∘∘∘∘∘>) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4, Functor f5) => (a -> b) -> f (f1 (f2 (f3 (f4 (f5 a))))) -> f (f1 (f2 (f3 (f4 (f5 b))))) infixl 4 Source

(<<∘>>) :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) Source

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

newtype NestedFunctor m n a 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)

Constructors

NestedFunctor 

Fields

fromNestedFunctor :: m (n a)
 

Instances

(Functor m, Functor n) => Functor (NestedFunctor m n) Source 
Show (m (n a)) => Show (NestedFunctor m n a) Source 

nested :: (Functor f, Functor f1) => (f1 (NestedFunctor m1 n1 a1) -> f (NestedFunctor m n a)) -> f1 (m1 (n1 a1)) -> f (m (n a)) Source

type family Functors lst :: Constraint Source

Equations

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