# Revision history for deep-transformations
## 0.4 -- 2025-10-26
### **BREAKING**
Major type changes:
* Moved the `attribution` method from the `AG.Attribution` class to the new `AG.At` class
* Changed the kind of the second parameter of the `AG.Atts` type family from `Type` to `(Type -> Type) -> (Type ->
Type) -> Type`
* As a consequence, removed the two deep&shallow type parameters of the `AG.Attribution` and `AG.At` classes
* Adopted the same naming scheme in `AG.Dimorphic` and `AG.Monomorphic`
* Dropped functions `applyDefault`, and `applyDefaultWithAttributes` from `Transformation.AG`
Major reorganization of the data types around the `Keep` semantics:
* Dropped `PreservingSemantics` from `AG`, `Monomorphic`, and `Dimorphic` modules
* Dropped `AG.knitKeeping`, making `AG.Keep` an attribution wrapper instead
* Dropped `Keep` from `Mono`/`Dimorphic` modules
* Replaced `AG.AllAtts` with the `AG.Kept` data type
* Introduced the `AG.Kept` attribute synthesized by the `AG.Keep` transformation wrapper
Breaking instance changes:
* Strengthened the `Foldable` constraint on the `attribution` method to `Traversable`
* Made the default `Bequether` & `Synthesizer` instances specific to `Auto`
* Dropped the fixed instance `Full.Functor (Transformation.Rank2.Map p q)`
### Additions
* the `AG.Knit` transformation
* `Transformation.Coercion` and `Full.coerce`
* the wrapper `Dimorphic.T` separate from `Dimorphic.Auto`
* the `Origin` associated type
* `mapInherited` and `mapSynthesized`
* `Semigroup` and `Monoid` instances for `Inherited` and `Synthesized`
* `Deep.Const2`
* `instance Attribution (Keep t)`
### Other improvements
* Added `test/RepMinKeep ` and `test/RepMinKeepAG`
* Bumped the lower bound of the `rank2classes` dependency to require the new `Rank2.coerce` method
* Bumped the upper bound of the `generic-lens` dependency
* Expanded documentation
* Fixed the Transformation doctests for docspec
* Turned `doctests` from a testsuite into a named library, dropped `cabal-doctest`
* Updated GitHub CI action
## 0.3 -- 2025-01-01
* **BREAKING**: Changed the definitions of `Deep.Product` and `Deep.Sum`
* Added `Shallow` class instances for all data types declared in the `Rank2` module
* Added `Shallow` class instances for `Proxy`, `Const`, `Product`, and `Sum`
* Bumped the upper bound of the template-haskell dependency to compile with GHC 9.12.1
* Fixed the PolyKinds-related test errors
* Added `Deep.Only` and `Deep.Flip` data types to mirror `Rank2.Only` and `Rank2.Flip`
## 0.2.3 -- 2024-05-18
* Bumped the upper bound of the template-haskell dependency
* Generalized the TH generation code
* Fixed the loopy superclass constraints in instance declarations
## 0.2.2 -- 2023-06-25
* Updated for GHC 9.8.1 and TH 2.22
* Updated TH code to use `DuplicateRecordFields` and `OverloadedRecordDot` when enabled
* Fixed warnings in tests
## 0.2.1.2 -- 2023-06-25
* Bumped the upper bound of the `template-haskell` dependency
## 0.2.1.1 -- 2023-04-02
* Bumped the upper bound of the `rank2classes` dependency
## 0.2.1 -- 2023-01-07
* Added AG.Dimorphic
* Added combinators `Transformation.Mapped`, `Folded`, and `Traversed`
* Compiling with GHC 9.4
## 0.2 -- 2022-03-27
* Changes necessary to compile with GHC 9.2.2
* Excluded GHC 8.2.2 from `deep-transformations` and GitHub CI
* Increased the `deep-transformations`' bottom bound of base dependency
* Relaxed the bounds of the `generic-lens` dependency
* Fixed `deep-transformations` compilation with GHC 9.0.1
* Added an explicit implementation `mappend = (<>)`
* Used haskell-ci to generate GitHub CI
* Incremented upper dependency bounds
* Added `AG.Generics.Keep`
* Added `knitKeeping` and `applyDefaultWithAttributes` to `AG`
* Dropped `fullMapDefault`
* Switch the README's attribute grammar functor to map upwards
* Removed unused code
* Added `infixl 4` declarations for all `<$>` methods
* Added the `AG.Monomorphic` module
* Fixed `Transformation.Shallow.TH` for repeated type parameters
* Added `Transformation.Deep.Sum`
## 0.1 -- 2020-11-11
First version