ffunctor-1.2.1: FFunctor typeclass

Safe HaskellNone
LanguageHaskell2010

Data.FFunctor

Description

Functor of Functors

Synopsis

Documentation

class FFunctor (f :: (* -> *) -> *) where Source #

A Functor over Functors (aka Higher Kinded Functor)

Minimal complete definition

Nothing

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> f m -> f n Source #

Applies a natural transformation to a higher kinded type

ffmap :: (Generic1 f, FFunctor (Rep1 f), Functor m, Functor n) => (forall a. m a -> n a) -> f m -> f n Source #

Applies a natural transformation to a higher kinded type

Instances
FFunctor (V1 :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> V1 m -> V1 n Source #

FFunctor (U1 :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> U1 m -> U1 n Source #

FFunctor f => FFunctor (Rec1 f) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> Rec1 f m -> Rec1 f n Source #

FFunctor (Const c :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> Const c m -> Const c n Source #

FFunctor (K1 i c :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> K1 i c m -> K1 i c n Source #

(FFunctor f, FFunctor g) => FFunctor (f :+: g) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> (f :+: g) m -> (f :+: g) n Source #

(FFunctor f, FFunctor g) => FFunctor (f :*: g) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> (f :*: g) m -> (f :*: g) n Source #

(FFunctor f, FFunctor g) => FFunctor (Product f g) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> Product f g m -> Product f g n Source #

(FFunctor f, FFunctor g) => FFunctor (Sum f g) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> Sum f g m -> Sum f g n Source #

FFunctor f => FFunctor (M1 i c f) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> M1 i c f m -> M1 i c f n Source #

(Functor f, FFunctor g) => FFunctor (f :.: g) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> (f :.: g) m -> (f :.: g) n Source #

(Functor f, FFunctor g) => FFunctor (Compose f g) Source # 
Instance details

Defined in Data.FFunctor

Methods

ffmap :: (Functor m, Functor n) => (forall a. m a -> n a) -> Compose f g m -> Compose f g n Source #

luftIO :: FFunctor f => MonadIO m => f IO -> f m Source #

Lifts an IO implementation of a higher kinded type (e.g. record of functions) into a MonadIO

e.g. `luftIO logger` lifts a `Logger IO` into a `Logger m`

luft :: FFunctor f => Monad m => MonadTrans t => Functor (t m) => f m -> f (t m) Source #

Lifts a higher kinded type (e.g. record of functions) into a monad transformer.

e.g. `luft logger` lifts a `Logger m` into a `Logger (ReaderT m Foo)`