Profunctors

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 irc.freenode.net.

-Edward Kmett

Changes

5.6.2 [2021.02.17]

  • Add Semigroup and Monoid instances for Forget

5.6.1 [2020.12.31]

  • Add Functor instances for PastroSum, CopastroSum, Environment, FreeMapping, Pastro, Copastro, FreeTraversing, and Coyoneda.
  • Explicitly mark modules as Safe.

5.6 [2020.10.01]

  • Enable the PolyKinds extension. The following datatypes now have polymorphic kinds: (:->), Cayley, Procompose, Rift, ProfunctorFunctor, Ran, Codensity, Prep, Coprep, Star, Costar, WrappedArrow, Forget.
  • Allow building with GHC 9.0.

5.5.2 [2020.02.13]

  • Add Cochoice, Costrong, Closed, Traversing, and Mapping instances for Cayley.
  • Add Mapping and Traversing instances for Tannen.

5.5.1 [2019.11.26]

  • Add Choice, Cochoice, Closed, Strong, and Costrong instances for Data.Bifunctor.Sum.

5.5 [2019.09.06]

  • Change the type of roam to make it actually useful.
  • Add a Cochoice instance for Forget.

5.4 [2019.05.10]

  • Add wander-like combinator roam to Mapping.
  • Remove illegal instance Choice (Costar w).
  • Add strong combinator #62.
  • Only depend on semigroups before GHC 8.0.
  • Add Contravariant instances for Star and Forget.

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

5.2.1

  • 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.

5.2

  • 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.

5.1.2

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

5.1.1

  • Add proper support for GHC 7.0+.

5.1

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

5.0.1

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

5.0.0.1

  • Documentation fix

5

  • 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.

4.4.1

  • 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 7.10.0.20150307

4.4

  • 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.

4.3.2

  • Added some missing instances for UpStar and DownStar.

4.3

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

4.2.0.1

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

4.2

  • 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.

4.1

  • 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’

4.0.3

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

4.0.2

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

4.0

  • Merged the contents of profunctor-extras into profunctors.

3.3

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

3.2

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

3.1.3

  • Removed upper bounds on my own intra-package dependencies

3.1.1

  • Added Documentation!
  • Added Lenticular and Prismatic Profunctors

3.1

  • instance Profunctor Tagged

3.0

  • Updated version number to match the rest of my libraries