kan-extensions

Kan extensions, Kan lifts, various forms of the Yoneda lemma, and (co)density (co)monads

http://github.com/ekmett/kan-extensions/

Version on this page:4.1.1@rev:1
LTS Haskell 22.39:5.2.6
Stackage Nightly 2024-10-29:5.2.6
Latest on Hackage:5.2.6

See all snapshots kan-extensions appears in

BSD-3-Clause licensed by Edward A. Kmett
Maintained by Edward A. Kmett
This version can be pinned in stack with:kan-extensions-4.1.1@sha256:d9810fd1776711e2ed8d39698af5a971b2cb0005639d831e72cca0dc35a8a83e,2083

Module documentation for 4.1.1

  • Control
    • Control.Comonad
      • Control.Comonad.Density
    • Control.Monad
      • Control.Monad.Co
      • Control.Monad.Codensity
  • Data
    • Data.Functor
      • Data.Functor.Contravariant
        • Data.Functor.Contravariant.Coyoneda
        • Data.Functor.Contravariant.Day
        • Data.Functor.Contravariant.Yoneda
      • Data.Functor.Coyoneda
      • Data.Functor.Day
      • Data.Functor.Kan
        • Data.Functor.Kan.Lan
        • Data.Functor.Kan.Lift
        • Data.Functor.Kan.Ran
        • Data.Functor.Kan.Rift
      • Data.Functor.Yoneda

kan-extensions

Build Status

This package provides tools for working with various Kan extensions and Kan lifts in Haskell.

Among the interesting bits included are:

  • Right and left Kan extensions (Ran and Lan)
  • Right and left Kan lifts (Rift and Lift)
  • Multiple forms of the Yoneda lemma (Yoneda)
  • The Codensity monad, which can be used to improve the asymptotic complexity of code over free monads (Codensity, Density)
  • A “comonad to monad-transformer transformer” that is a special case of a right Kan lift. (CoT, Co)

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

4.1.1

  • Added Applicative instance for Day
  • Added Typeable instance for Codensity

4.1.0.1

  • Added tagged dependency

4.1

  • Moved co- and contra- variant Day convolution from contravariant to here. Day convolution is intimately connected to Rift.

4.0.3

  • Added liftCoT0M, liftCoT1M, diter and dctrlM for using CoT w m to model a state machine with states in w and effects in m.

4.0.2

  • Made fixes necessary to work around changes in ImpredicativeTypes for GHC 7.8.1rc2

4.0.1

  • Bug fix so we can compile on GHC 7.4

4.0

  • Removed keys dependency
  • Now compatible with adjunctions 4.0

3.7

  • Moved all the Yoneda variants around again.
  • Improved haddocks

3.6.2

  • Added Data.Functor.Contravariant.Yoneda to complete the set of Yoneda embeddings/reductions.

3.6.1

  • Added several missing isomorphisms

3.6

  • instance Monad m => MonadSpec (Yoneda m)

3.5.1

  • Fixed a bug in the signature for composedRepToCodensity.

3.5

  • More combinators for Rift/Lift.
  • Added combinators for working with representable functors rather than just adjoint functors.
  • Split Data.Functor.KanExtension into Data.Functor.Kan.Ran and Data.Functor.Kan.Lan
  • Split Data.Functor.KanLift into Data.Functor.Kan.Rift and Data.Functor.Kan.Lift
  • Moved from Data.Functor.Yoneda.Contravariant to Data.Functor.Yoneda.Reduction adopting terminology from Todd Trimble.
  • Added various missing isomorphisms.
  • Greatly improved the Haddocks for this package stating laws and derivations where we can (especially for ‘Rift’ and ‘Ran’).

3.3

  • Rift is now Applicative. Added rap.

3.2

  • Added right and left Kan lifts under Data.Functor.KanLift.
  • Decreased reliance on the Composition class where unnecessary in the API

3.1.2

  • Marked modules Trustworthy as required for SafeHaskell in the presence of these extensions.

3.1.1

  • Refactored build system
  • IRC build-bot notification
  • Removed upper bounds on dependencies on my other packages

3.1

  • Moved Control.Monad.Free.Church over to the free package instead and removed it from kan-extensions