packages feed

alignment-0.2.0.1: changelog.md

0.2.0.1 (2026-05-19)

* Add comprehensive Hedgehog property-based test suite (52 tests covering all laws)
* Add test suite for Functor, Bifunctor, Semialign, Align, and Unalign laws
* Tests cover all instances: List, Maybe, NonEmpty, Vector, Seq, Map, IntMap, Identity, ZipList
* Add hedgehog dependency to library for doctest examples
* Add 3 hedgehog property tests embedded in doctests
* Expand law documentation with additional doctest examples
* Total 244 doctests (up from 227), all passing
* Note: Map and IntMap documented to intentionally fail symmetry law with disjoint keys
* Remove explanatory notes about non-existent instances (Apply, Selective, Extend, Alt)
* Apply hlint suggestion to simplify lambda in Witherable instance
* Format entire codebase with ormolu

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.