BSD-3-Clause licensed by Edward A. Kmett
Maintained by Edward A. Kmett
This version can be pinned in stack with:bifunctors-5.4.2@sha256:defcc328b85b4bbdac605fe20b96f1467d01bf788237b18df5a86c3ccb81d55b,2853


Hackage Build Status

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



  • Make deriveBitraversable use liftA2 in derived implementations of bitraverse when possible, now that liftA2 is a class method of Applicative (as of GHC 8.2)
  • Backport slightly more efficient implementations of bimapDefault and bifoldMapDefault


  • Add explicit Safe, Trustworthy, and Unsafe annotations. In particular, annotate the Data.Bifoldable module as Trustworthy (previously, it was inferred to be Unsafe).


  • Only export Data.Bifoldable and Data.Bitraversable when building on GHC < 8.1, otherwise they come from base
  • Allow TH derivation of Bifunctor and Bifoldable instances for datatypes containing unboxed tuple types


  • Added bifoldr1, bifoldl1, bimsum, biasum, binull, bilength, bielem, bimaximum, biminimum, bisum, biproduct, biand, bior, bimaximumBy, biminimumBy, binotElem, and bifind to Data.Bifoldable
  • Added Bifunctor, Bifoldable, and Bitraversable instances for GHC.Generics.K1
  • TH code no longer generates superfluous mempty or pure subexpressions in derived Bifoldable or Bitraversable instances, respectively


  • Added Bifoldable and Bitraversable instances for Constant from transformers
  • Data.Bifunctor.TH now compiles warning-free on GHC 8.0


  • Added several Arrow-like instances for Tannen so we can use it as the Cayley construction if needed.
  • Added Data.Bifunctor.Sum
  • Added BifunctorFunctor, BifunctorMonad and BifunctorComonad.
  • Backported Bifunctor Constant instance from transformers


  • Added Data.Bifunctor.Fix
  • Added Data.Bifunctor.TH, which permits TemplateHaskell-based deriving of Bifunctor, Bifoldable and Bitraversable instances.
  • Simplified Bitraversable.


  • Inverted the dependency on semigroupoids. We can support a much wider array of base versions than it can.
  • Added flags


  • Support Arg from semigroups 0.16.2
  • Fixed a typo.


  • Bumped dependency on tagged, which is required to build cleanly on GHC 7.9+
  • Only export Data.Bifunctor when building on GHC < 7.9, otherwise it comes from base.

  • Added documentation for ‘Bifoldable’ and ‘Bitraversable’


  • Added Data.Bifunctor.Join
  • Fixed improper lower bounds on base

  • Updated to BSD 2-clause license


  • Added product bifunctors


  • Compatibility with semigroupoids 4.0


  • Added missing product instances for Biapplicative and Biapply.


  • Added Data.Biapplicative.
  • Added the Clown and Joker bifunctors from Conor McBride’s “Clowns to the left of me, Jokers to the right.”
  • Added instances for Const, higher tuples
  • Added Tagged instances.


  • Added Data.Bifunctor.Flip and Data.Bifunctor.Wrapped.


  • Removed upper bounds from my other package dependencies