BSD-3-Clause licensed by Nicolas Frisby
Maintained by Nicolas Frisby, Ryan Scott
This version can be pinned in stack with:invariant-0.2.2@sha256:8f4eff4818c116fa35f4dbc79dc952605406647107f68853b5c5f0356e95b2a4,2348

Module documentation for 0.2.2


Hackage Hackage Dependencies Haskell Programming Language BSD3 License Build

Haskell98 invariant functors



  • Add genericInvmap function (and make it the default implementation of invmap for Invariant instances) on GHC 7.2 or later
  • Make Tagged instance poly-kinded


  • Add Foldable and Traversable instances for WrappedFunctor
  • Fixed build on GHC HEAD


  • Support deriving Invariant and Invariant2 instances with Template Haskell
  • Added invmapFunctor, invmapContravariant, invmap2Bifunctor, and invmap2Profunctor to make defining Invmap and Invmap2 instances somewhat easier
  • Added WrappedFunctor, WrappedContravariant, WrappedBifunctor, and WrappedProfunctor data types to allow use of invmap and invmap2 for data types that aren’t Invariant or Invariant2 instances.
  • Added Invariant instances for lazy ST, ArrowMonad, Handler, Identity, First, Last, Alt, Proxy, ArgDescr, ArgOrder, and OptDescr
  • Added Invariant and Invariant2 instances for data types in the array, bifunctors, containers, profunctors, semigroups, stm, tagged, transformers, and unordered-containers libraries


  • Add Invariant instances for Dual and Endo


  • Bump contravariant upper version bounds


  • Initial commit