Dan Doel asked me to roll category-extras into my nascent comonad transformer library, and the result is category-extras 0.44.2!
* Comonad Transformers. Context/ContextT, Reader/ReaderT.
* A suite of Bifunctors and combinators in Control.Bifunctor.* -- we attach most of the logic usually associated with a monoidal/comonoidal category to the individual Bifunctor since Hask is a rich category to begin with.
* A suite of Functors and combinators in Control.Functor.*
* Pointed and copointed functors.
* Control.Recursion has been broken out into a Control.Morphism.* and recoded to use a simpler distributive law.
* Type Indexed versions of Applicatives, Monads, and Comonads (including Diatchki's Indexed State and Wadler's Delimited Continuation Parameterized Monad)
* Parameterized Monads a la Ghani and Johann's paper ICFP 07 paper, and their Applicative and comonadic dual.
* Higher-order hylo-, cata- and ana- morphisms.
* Higher-order Monads a la Ghani and Johann and their comonadic equivalents.
* Kan extensions.
* BiKleisli arrows as seen in Uustalu and Vene's Signals and Comonads and SIGFPE's recent posts
* The Pointer comonad
* Grabbed Iavor Diatchki's value-supply and rolled it in as Control.Comonad.Supply to make it clearer that it is a comonad, and pave the way towards a Supply comonad transformer
* A richer set of compositions to allow for construction of comonads and monads not only from adjunctions, but also from pre-composition or post-composition of a monad with a pointed functor, and similarly pre-composition and post-composition of a comonad with a copointed functor.
There is still a lot to do in terms of adding back a lot of the documentation from the original, documenting the extensions and fleshing out all of the definable instances as the concepts have grown exceptionally fine-grained.
I definitely welcome feedback and additions.
In particular if you were using a feature that was supported by the old library or is unnatural to program in the current one, let me know.
My goal is to gather a lot of this esoterica into one place and integrate it into something cohesive.
HEAD:
Release:
-Edward Kmett