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

Module documentation for 4.3

There are no documented modules for this package.


Hackage Build Status

A semigroupoid is a Category without id.

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.2.2 [2018.01.18]

  • Add optional to Data.Functor.Alt (analogous to the optional function in Control.Applicative)
  • liftF2 is now a class method of Apply (mirroring the fact that liftA2 is now a class method of Applicative). liftF2 and (<.>) have default definitions in terms of the other.
  • Allow building with GHC 8.4
  • Apply and Bind instances for Q, from the template-haskell package.
  • Add instances for (:~:) and (:~~:) from Data.Type.Equality, and Coercion from Data.Type.Coercion


  • Add the toNonEmpty method to Foldable1. Add foldrM1 and foldlM1 functions to Data.Semigroup.Foldable that are defined in terms of toNonEmpty.
  • Add Apply, Bind, Foldable1, and Traversable1 instances for Complex
  • Add Apply and Bind instances for HashMap from the unordered-containers package (on which semigroupoids now depends)
  • Add Semigroupoid instances for Tagged and Const


  • Revamp Setup.hs to use cabal-doctest. This makes it build with Cabal-1.25, and makes the doctests work with cabal new-build and sandboxes.
  • Added instances to Alt, Plus, Apply, Bind and Extend for GHC.Generics, Tagged and Proxy where appropriate.


  • The remaining orphan instances in Data.Traversable.Instances have been replaced in favor of the orphan instances from transformers-compat-0.5.
  • The documentation now states laws that instances of Apply are expected to uphold.
  • doctest-0.11 support
  • Fixed compilation of tests with stack


  • transformers-compat 0.5 support
  • Removed some redundant constraints.
  • GHC 8 support

  • doctest 0.10 support

  • Bugfix for GHC 7.4. PolyKinds on 7.4 cause all sorts of haskell interface file errors. One of the #if guards that turned it off on 7.4 was missing and has been fixed.

  • Added the CHANGELOG to the distribution so that hackage can link to it in the haddocks.

5 - Absorbed Data.Bifunctor.Apply, Data.Semigroup.Bifoldable and Data.Semigroup.Traversable from bifunctors. This caused us to pick up a dependency on tagged. Exiled Data.Semifunctor.*, Data.Semigroupoid.Product and Data.Semigroupoid.Coproduct to semigroupoid-extras. This let us open up to older versions of GHC again. * Set an explicit fixity for -<- and ->-.


  • Major changes to the API to support PolyKinds and DataKinds. This necessarily shuts off GHC <= 7.4.
  • Orphan instances have moved upstream into a common base-orphans package.


  • Added asum1 to Data.Semigroup.Foldable.

  • Support for 'ConstrainedClassMethods' is currently required for GHC HEAD.


  • Added missing instances for ExceptT. Obtain it via transformers-compat if need be for old transformers versions.
  • Several Bind and Apply instances now require somewhat more minimal contexts.


  • Backported Foldable/Traversable instances from lens


  • Foldable1/Traversable1 for tuples


  • contravariant 1.0 support.


  • Added flags to provide unsupported cabal sandbox build modes.


  • Fixed bitrot in the Data.Functor.Extend documentation.
  • Fixed warnings on GHC 7.8.1rc2 caused by importing Control.Monad.Instances.


  • Merged in the contents of the groupoids and semigroupoid-extras packages.



  • Claim to be Trustworthy where necessary


  • Tightened the upper bounds slightly to enable PVP compliance while retaining a flexible development cycle.
  • Raised the upper bound on contravariant.


  • Removed upper bounds relative to my other packages
  • Refactored directory layout
comments powered byDisqus