-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | FFunctor typeclass -- -- Micro library with a Higher Kinded Functor in the spirit of HFunctor, -- MFunctor and MonadTrans (which all have different kindedness). -- -- Useful to map over the type parameter in a record of functions, e.g. -- https://www.benjamin.pizza/posts/2017-12-15-functor-functors.html -- and -- https://discourse.haskell.org/t/local-capabilities-with-mtl/231 -- and -- https://discourse.haskell.org/t/some-limits-of-mtl-with-records-of-functions/576 @package ffunctor @version 1.2.0 -- | Functor of Functors module Data.FFunctor class FFunctor (f :: (* -> *) -> *) ffmap :: (FFunctor f, Functor m, Functor n) => (forall a. m a -> n a) -> f m -> f n ffmap :: (FFunctor f, Generic1 f, FFunctor (Rep1 f), Functor m, Functor n) => (forall a. m a -> n a) -> f m -> f n -- | Lifts an IO impl of a record of functions into a more general MonadIO -- impl luftIO :: FFunctor f => MonadIO m => f IO -> f m -- | Lifts a record of functions (that has an FFunctor) into a monad -- transformer. -- -- e.g. `luft logger` lifts a `Logger m` into a `Logger (ReaderT m Foo)` luft :: FFunctor f => Monad m => MonadTrans t => Functor (t m) => f m -> f (t m) instance Data.FFunctor.FFunctor GHC.Generics.V1 instance Data.FFunctor.FFunctor GHC.Generics.U1 instance Data.FFunctor.FFunctor f => Data.FFunctor.FFunctor (GHC.Generics.Rec1 f) instance Data.FFunctor.FFunctor (GHC.Generics.K1 i c) instance Data.FFunctor.FFunctor f => Data.FFunctor.FFunctor (GHC.Generics.M1 i c f) instance (Data.FFunctor.FFunctor f, Data.FFunctor.FFunctor g) => Data.FFunctor.FFunctor (f GHC.Generics.:+: g) instance (Data.FFunctor.FFunctor f, Data.FFunctor.FFunctor g) => Data.FFunctor.FFunctor (f GHC.Generics.:*: g) instance (GHC.Base.Functor f, Data.FFunctor.FFunctor g) => Data.FFunctor.FFunctor (f GHC.Generics.:.: g) instance (Data.FFunctor.FFunctor f, Data.FFunctor.FFunctor g) => Data.FFunctor.FFunctor (Data.Functor.Sum.Sum f g) instance (Data.FFunctor.FFunctor f, Data.FFunctor.FFunctor g) => Data.FFunctor.FFunctor (Data.Functor.Product.Product f g) instance Data.FFunctor.FFunctor (Data.Functor.Const.Const c) instance (GHC.Base.Functor f, Data.FFunctor.FFunctor g) => Data.FFunctor.FFunctor (Data.Functor.Compose.Compose f g)