kernmantle-0.1.0.0: Composing Applicatives, Monads, Comonads and Arrows into Arrows
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Profunctor.EffFunctor

Description

This module provides some missing classes from profunctors

BEWARE: That part of Kernmantle API is experimental and is likely to change in the future.

Synopsis

Documentation

type EffFunctor = BifunctorFunctor Source #

Functors over binary effects

effmap :: EffFunctor f => (eff :-> eff') -> f eff :-> f eff' Source #

Maps the effect inside an EffFunctor. Various names to follow the bifunctors/profunctors conventions.

effrmap :: EffFunctor f => (eff :-> eff') -> f eff :-> f eff' Source #

Maps the effect inside an EffFunctor. Various names to follow the bifunctors/profunctors conventions.

effsecond :: EffFunctor f => (eff :-> eff') -> f eff :-> f eff' Source #

Maps the effect inside an EffFunctor. Various names to follow the bifunctors/profunctors conventions.

class EffFunctor f => EffPointedFunctor f where Source #

Pointed Functors (= functors equipped with pure) over binary effects. Doesn't have an equivalent afaik in bifunctors.

Methods

effpure :: eff :-> f eff Source #

Instances

Instances details
EffPointedFunctor (RopeRunner record mantle interp) Source # 
Instance details

Defined in Control.Kernmantle.Rope.Internal

Methods

effpure :: forall (eff :: Type -> Type -> Type). eff :-> RopeRunner record mantle interp eff Source #

Applicative f => EffPointedFunctor (Tannen f :: (Type -> Type -> Type) -> Type -> Type -> Type) Source # 
Instance details

Defined in Data.Profunctor.EffFunctor

Methods

effpure :: forall (eff :: Type -> Type -> Type). eff :-> Tannen f eff Source #

class (forall a. Arrow a => EffFunctor (p a)) => EffBifunctor p where Source #

Would be a "BifunctorBifunctor", but that class doesn't exist

Minimal complete definition

Nothing

Methods

effbimap :: Arrow a => (a :-> a') -> (b :-> b') -> p a b :-> p a' b' Source #

efffirst :: Arrow a => (a :-> a') -> p a b :-> p a' b Source #

class (forall a. EffFunctor (p a)) => EffProfunctor p where Source #

Would be a "ProfunctorBifunctor", but that class doesn't exist.

Minimal complete definition

Nothing

Methods

effdimap :: (a' :-> a) -> (b :-> b') -> p a b :-> p a' b' Source #

efflmap :: (a' :-> a) -> p a b :-> p a' b Source #

Instances

Instances details
RMap m => EffProfunctor (RopeRunner (Rec :: (Strand -> Type) -> [Strand] -> Type) m) Source # 
Instance details

Defined in Control.Kernmantle.Rope.Internal

Methods

effdimap :: forall (a' :: Type -> Type -> Type) (a :: Type -> Type -> Type) (b :: Type -> Type -> Type) (b' :: Type -> Type -> Type). (a' :-> a) -> (b :-> b') -> RopeRunner Rec m a b :-> RopeRunner Rec m a' b' Source #

efflmap :: forall (a' :: Type -> Type -> Type) (a :: Type -> Type -> Type) (b :: Type -> Type -> Type). (a' :-> a) -> RopeRunner Rec m a b :-> RopeRunner Rec m a' b Source #