-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Collection of functor utilities, providing handy operators, like generalization of (.). -- -- Collection of functor utilities, providing handy operators, like -- generalization of (.). @package functor-utils @version 1.1 module Data.Functor.Utils fmap1 :: Functor f => (a -> b) -> f a -> f b fmap2 :: (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) fmap3 :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) fmap4 :: (Functor f, Functor f1, Functor f2, Functor f3) => (a -> b) -> f (f1 (f2 (f3 a))) -> f (f1 (f2 (f3 b))) 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)))) 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))))) 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)))))) 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))))))) 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)))))))) dot1 :: Functor f => (a -> b) -> f a -> f b dot2 :: (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) dot3 :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) dot4 :: (Functor f, Functor f1, Functor f2, Functor f3) => (a -> b) -> f (f1 (f2 (f3 a))) -> f (f1 (f2 (f3 b))) 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)))) 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))))) 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)))))) 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))))))) 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)))))))) (∘) :: Functor f => (a -> b) -> f a -> f b (∘∘) :: (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) (∘∘∘) :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) (∘∘∘∘) :: (Functor f, Functor f1, Functor f2, Functor f3) => (a -> b) -> f (f1 (f2 (f3 a))) -> f (f1 (f2 (f3 b))) (∘∘∘∘∘) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f (f1 (f2 (f3 (f4 a)))) -> f (f1 (f2 (f3 (f4 b)))) (.) :: (Functor f) => (a -> b) -> f a -> f b (.:) :: (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) (.:.) :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) (.::) :: (Functor f, Functor f1, Functor f2, Functor f3) => (a -> b) -> f (f1 (f2 (f3 a))) -> f (f1 (f2 (f3 b))) (.::.) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f (f1 (f2 (f3 (f4 a)))) -> f (f1 (f2 (f3 (f4 b)))) (.:::) :: (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))))) (.:::.) :: (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)))))) (.::::) :: (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))))))) (.::::.) :: (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)))))))) (<∘>) :: (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) (<∘∘>) :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) (<∘∘∘>) :: (Functor f, Functor f1, Functor f2, Functor f3) => (a -> b) -> f (f1 (f2 (f3 a))) -> f (f1 (f2 (f3 b))) (<∘∘∘∘>) :: (Functor f, Functor f1, Functor f2, Functor f3, Functor f4) => (a -> b) -> f (f1 (f2 (f3 (f4 a)))) -> f (f1 (f2 (f3 (f4 b)))) (<∘∘∘∘∘>) :: (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))))) (<<∘>>) :: (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) (<<$>>) :: (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) -- | 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) newtype NestedFunctor m n a NestedFunctor :: m (n a) -> NestedFunctor m n a [fromNestedFunctor] :: NestedFunctor m n a -> m (n a) nested :: (Functor f, Functor f1) => (f1 (NestedFunctor m1 n1 a1) -> f (NestedFunctor m n a)) -> f1 (m1 (n1 a1)) -> f (m (n a)) instance GHC.Show.Show (m (n a)) => GHC.Show.Show (Data.Functor.Utils.NestedFunctor m n a) instance (GHC.Base.Functor m, GHC.Base.Functor n) => GHC.Base.Functor (Data.Functor.Utils.NestedFunctor m n)