module Profunctor.Monad.Profunctor ( Profunctor(..) , (=.) , J ) where import Data.Profunctor infixl 5 =. (=.) :: Profunctor p => (y -> x) -> p x a -> p y a =. :: (y -> x) -> p x a -> p y a (=.) = (y -> x) -> p x a -> p y a forall (p :: * -> * -> *) a b c. Profunctor p => (a -> b) -> p b c -> p a c lmap -- | A type synonym to keep type signatures DRY. 'J' for "join". -- -- @ -- J :: (* -> * -> *) -> (* -> *) -- join :: Monad m => m (m a) -> (m a) -- @ -- type J p a = p a a