bidirectional arrows, bijective functions, and invariant functors

Version on this page:
LTS Haskell 22.12:
Stackage Nightly 2023-12-26:
Latest on Hackage:

See all snapshots invertible appears in

BSD-3-Clause licensed by Dylan Simon
Maintained by [email protected]
This version can be pinned in stack with:invertible-,3623

Module documentation for

  • Control
    • Control.Invertible
      • Control.Invertible.BiArrow
      • Control.Invertible.Functor
      • Control.Invertible.MonadArrow
      • Control.Invertible.Monoidal
        • Control.Invertible.Monoidal.Free
  • Data
    • Data.Invertible
      • Data.Invertible.Bijection
      • Data.Invertible.Bits
      • Data.Invertible.Bool
      • Data.Invertible.Coerce
      • Data.Invertible.Complex
      • Data.Invertible.Either
      • Data.Invertible.Enum
      • Data.Invertible.Function
      • Data.Invertible.Functor
      • Data.Invertible.List
      • Data.Invertible.Maybe
      • Data.Invertible.Monad
      • Data.Invertible.Monoid
      • Data.Invertible.Ord
      • Data.Invertible.Prelude
      • Data.Invertible.TH
      • Data.Invertible.Tuple

Representations and operations for bidirectional arrows (total isomorphisms: an arrow paired with its inverse). Classes for invariant functors and monoidal functors. Includes a number of useful bijections and operations, as well as interoperability with related packages.

Most users will want to import one or more of Data.Invertible qualified, Control.Invertible.Monoidal unqualified, and any additional compatibility modules.