Profunctor.Monad.Lifts

class Cofunctor p => Lifts p where Source #

lmap i (lifts p j) = lifts (lmap i p) (i >>> j)

lmap

lifts

>>>

lifts p i <*> lifts q j = lifts (p <*> q) (i &&& j >>> uncurry ($))

<*>

&&&

uncurry

$

Methods

lifts :: p x a -> First p x a -> p x a Source #

liftsArr :: (Lifts p, Arrow (First p)) => p x a -> (x -> a) -> p x a Source #

liftsId :: Lifts p => p a a -> p a a Source #