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.