BSD3 licensed by Edward A. Kmett
Maintained by Edward A. Kmett

Module documentation for 5.3

There are no documented modules for this package.


Hackage Build Status

Profunctors for Haskell.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the #haskell IRC channel on

-Edward Kmett


5.3 [2018.07.02]

  • Generalize the types of (#.) and (.#). Before, they were:

    (#.) :: (Profunctor p, Coercible c b) => (b -> c) -> p a b    -> p a c
    (.#) :: (Profunctor p, Coercible b a) => p b c    -> (a -> b) -> p a c

    Now, they are:

    (#.) :: (Profunctor p, Coercible c b) => q b c    -> p a b    -> p a c
    (.#) :: (Profunctor p, Coercible b a) => p b c    -> q a b    -> p a c
  • Drop support for GHC < 7.8.

  • Add a Profunctor instance for Data.Bifunctor.Sum.

5.2.2 [2018.01.18]

  • Add Semigroup instances for Closure and Tambara


  • Allow base-orphans-0.6.
  • Add Traversing instance for Forget
  • Add Traversing and Mapping instances for Procompose
  • Add Category instance for Star
  • Add mapCayley to Data.Profunctor.Cayley
  • Add pastro and unpastro to Data.Profunctor.Strong.
  • Add dimapWandering, lmapWandering, and rmapWandering to Data.Profunctor.Traversing
  • Add documentation stating the laws for various profunctors.
  • Introduce the Data.Profunctor.Yoneda module.


  • Renamed Cotambara to TambaraChoice and Pastro to PastroChoice.
  • Added a true Cotambara and Copastro construction for (co)freely generating costrength, along with CotambaraSum and CopastroSum variants.
  • Engaged in a fair bit of bikeshedding about the module structure for lesser used modules in this package.


  • Added Prep and Coprep along with witnesses to the adjunctions Prep -| Star : [Hask,Hask] -> Prof and Coprep -| Costar : [Hask,Hask]^op -> Prof.


  • Add proper support for GHC 7.0+.


  • instance Costrong (Cokleisli f).
  • instance Cochoice (Star f).
  • Changed the instance for Cochoice (Costar f).


  • MINIMAL pragma for Costrong and Cochoice.
  • More Costrong and Cochoice instances.

  • Documentation fix


  • UpStar and DownStar have become Star and Costar. Star is analogous to Kleisli, Costar is analogous to Cokleisli.
  • Split representability into sieves and representability.
  • Moved Data.Profunctor.Collage to semigroupoids 5, and removed the semigroupoids dependency.
  • Rather greatly widened the range of GHC versions we can support.


  • Using SafeHaskell, GHC 7.8+ Data.Profunctor.Unsafe now infers as Trustworthy and many more modules now infer as Safe.
  • We now build warning-free on GHC


  • Added Coercible constraint to (#.) and (.#) when building with GHC 7.8
  • Strong is now a superclass of Representable
  • Updated the URL of the “Arrows are Strong Monads” paper. The old URL is now a dead link.


  • Added some missing instances for UpStar and DownStar.


  • Removed the non law-abiding instance for Closed (Forget r)
  • Forget is Representable
  • MINIMAL pragmas

  • Avoided using ‘type’ in the export list, as that doesn’t work on 7.4.


  • Renamed -| to ProfunctorAdjunction because GHC 7.4 still exists in the wild.
  • Renamed -/-> to :-> for the same reason. Also the former was confusing as they conflated profunctor homomorphisms and profunctors themselves.


  • Flipped the order of ‘Procompose’
  • Added the notion of Monads and Comonads on the category of profunctors.
  • Added ‘Cayley’ which takes normal Haskell Monads and Comonads to a ‘ProfunctorMonad’ and ‘ProfunctorComonad’ respectively. Cayley is also known as the ‘static arrow’ construction
  • Added ‘Closed’ which is adjoint to ‘Strong’.
  • Added ‘Closure’ which freely adjoins ‘Closed’ to any ‘Profunctor’.
  • Added ‘Tambara’ which freely adjoins ‘Strong’ to any ‘Profunctor’.
  • Added ‘Cotambara’ which freely adjoins ‘Choice’ to any ‘Profunctor’.
  • Under the new ‘Procompose’ the old ‘Rift’ is now ‘Ran’, and the old ‘Lift’ was misnamed. It is now ‘Rift’


  • Added Data.Profunctor.Lift containing the left Kan lift of a profunctor.


  • Added assoc to Data.Profunctor.Composition so that we have all 3 associators.


  • Merged the contents of profunctor-extras into profunctors.


  • Added instance Choice (Upstar f) and introduced Forget.


  • Renamed Lenticular and Prismatic to Strong and Choice, and restructured them.


  • Removed upper bounds on my own intra-package dependencies


  • Added Documentation!
  • Added Lenticular and Prismatic Profunctors


  • instance Profunctor Tagged


  • Updated version number to match the rest of my libraries
comments powered byDisqus