Changelog of @hackage/alignment 0.2.0.0

0.2.0.0 (2026-05-19)

  • Add Unalign type class for recovering original functors from alignment
  • Add aligned isomorphism to Unalign, witnessing that alignment is lossless
  • Add unaligned isomorphism, the inverse of aligned
  • Add unalignWith method to Unalign, the dual of alignWith for transformation during unalignment
  • Add Unalign instances for Identity, [], Maybe, NonEmpty, ZipList, Seq, Vector
  • Add NFData instance for This (enables criterion benchmarking)
  • Note: Map and IntMap deliberately excluded from Unalign to maintain law compliance
  • Add comprehensive law documentation for Semialign, Align, and Unalign type classes
  • Add testable law-checking functions: semialignNaturality, semialignSymmetry, semialignCoherence, semialignWithLaw, alignRightIdentity, alignLeftIdentity, alignEmpty, unalignRoundtrip, unalignNaturality
  • Add 12 RULES pragmas for fusion optimization:
    • Semialign fusion: semialign/naturality, alignWith/bimap, align/swap/symmetry, fmap/as/bimap
    • Unalign fusion: unalign/align/roundtrip, unalign/bimap/naturality, unalignWith/align
    • Functor/Bifunctor composition: fmap/fmap/This, bimap/bimap/This
    • Swap optimization: swap/swap/This, swap/bimap/This, bimap/swap/This
  • Add 56 INLINE/INLINABLE pragmas for comprehensive optimization:
    • All type class method defaults marked INLINE
    • All Semialign instances marked INLINE or INLINABLE
    • All Align nil methods marked INLINE
    • All Unalign instances marked INLINE or INLINABLE
    • All lens/traversal/fold functions marked INLINE or INLINABLE
    • Strategic use of INLINE for small wrappers, INLINABLE for recursive/larger functions
  • Add FUSION.md documenting fusion rules and performance characteristics
  • Add comprehensive criterion benchmark suite comparing to zip/unzip
  • Reorganize all Semialign instances to be consecutive for better code navigation
  • Expand README with examples, comparisons, and usage guide
  • Improve cabal file description

0.1.0.6

  • Fix URLs in cabal file

0.1.0.5

  • Remove optics allThoseA' and allThoseB'
  • Add optics allTheseThoseA1 and allTheseThoseB1
  • Instances for Bifoldable1 and Bitraversable1
  • Minor code improvements

0.1.0.4

  • Bump versions

0.1.0.3

  • Change the type of alignWith to be more consistent.

0.1.0.2

  • Add allThoseAOr and allThoseBOr.

0.1.0.1

  • Add alignWith.
  • Remove extraneous dependency.

0.1.0.0

  • This change log starts.
  • The initial version of alignment.