module Profunctor.Monad.Profunctor ( Profunctor(..) , (=.) , J ) where import Data.Profunctor infixl 5 =. (=.) :: Profunctor p => (y -> x) -> p x a -> p y a (=.) = 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