Changelog for generic-data-1.1.0.2
1.1.0.2 -- 2024-12-06
- Compatibility with base-orphans 0.9.3
- Tested with GHC 8.0 - 9.12.0
1.1.0.1
- Compatibility with base 4.21 (GHC 9.12)
- Avoid dependency on contravariant
1.1.0.0
- Remove
EqandOrdforGenerically1instances. They are now available in base 4.18, and base-orphans 0.8.8 for backwards compatibility. - (Revisions) Also compatible with base 4.20 (GHC 9.10) and 4.19 (GHC 9.8)
1.0.0.1
- Compatibility with base 4.18 (GHC 9.6)
1.0.0.0
-
GenericallyandGenerically1are in base 4.17 (GHC 9.4.1)!- generic-data reexports
GenericallyandGenerically1if using base >= 4.17. The following instances remain as orphans:Eq,Ord,Read,Show,Enum,Ix,Bounded,Foldable,Traversable,Read1,Show1. - base 4.17 includes instances for the non-stock-derivable classes:
SemigroupandMonoidforGenerically;Eq1,Ord1,Functor,Applicative, andAlternativeforGenerically1. - Note: the
SemigroupandMonoidinstances of base'sGenericallyare those of generic-data'sGenericProduct(which is subtly different fromGenerically's previous instance in generic-data). GenericallyandGenerically1are no longer defined using record syntax, so theunGenerically(1) field accessor no longer exists. The field accessors forFiniteEnumerationandGenericProductwere also removed for uniformity.
- generic-data reexports
0.9.2.1
- No external changes.
- Use cabal-docspec instead of doctest
0.9.2.0
- Add instance of
BoundedforFiniteEnumeration(the same asGenerically)
0.9.1.0
- Fix
conIdToString(it was completely broken) - Add
conIdMinandconIdMaxrepresenting the leftmost and rightmost constructors of a data type. - Add
NonEmptyTypeandIsEmptyTypeto express the constraint that a generic type must or must not be empty. - Reexport
GenericandGeneric1for convenience.
0.9.0.0
-
Improved definition of
gfoldMap,gtraverse, andsequenceA. The optimized Core ofTraversableinstances eliminates allGHC.Genericinstance boilerplate. In many cases, it is identical to the result of GHC'sDeriveFoldableandDeriveTraversableextensions (note: this was already not a problem forgfmap).It's worth noting that there are currently issues with inlining which prevent optimizations that generic-data would ideally rely on.
-
The biggest issue is that GHC will not even inline the
toandfrommethods of theGenericinstance it derives for large types (this shows up at around 5 constructors and 10 fields, which is indeed not really big). This will be fixed by a patch for GHC (WIP): https://gitlab.haskell.org/ghc/ghc/-/merge_requests/2965 -
There appear to be some more inlining issues beyond that (issue #40).
-
0.8.3.0
- Add generic
Read. Thanks to RyanGlScott.
0.8.2.0
- Add microsurgery
CopyRep. - Improve documentation of
Microsurgerymodule. - Fix a bug where
gshowsPrecwould incorrectly display prefix uses of symbol data constructors or record selectors (e.g.,data R = (:!:) Int Intordata S = MkS { (##) :: Int -> Int }). Thanks to RyanGlScott. - Fix a bug where
gshowsPrecwould incorrectly display infix uses of alphanumeric data constructors (e.g.,data T = Int `MkT` Int). Thanks to RyanGlScott.
0.8.1.0
- Add
Oldtype family mapping newtypes to their underlying type.
0.8.0.0
-
Add
GenericProduct, for derivingvia GenericProduct BwhenBis not the typeAyou want the derived instance for. Note this used to beGenerically's behavior forMonoidbefore 0.7.0.0. -
Add generic implementations for
Ix. Thanks to Topsii. -
Add
conIdNamed, to get aConIdby its type-level name -
Add instance
Show (ConId a) -
Improve type errors for deriving
SemigroupandMonoidviaGenerically. Thanks to yairchu.
0.7.0.0
- Change
Monoidinstance forGenerically, to be compatible with users' non-generic instances ofSemigroup. Thanks to yairchu. - Add
gcoerce,gcoerceBinop.
0.6.0.1
- Fix derivation of
Show1for(:.:)
0.6.0.0
- Add
Surgerynewtype for DerivingVia Derecordify,Typeage,RenameFields,RenameConstrs,OnFieldsare no longer type families, but defunctionalized symbols to be applied usingGSurgery.
0.5.0.0
- Specialize
onDatatoData - Add some instances for
U1andV1inMicrosurgery - Add
OnFieldsandDOnFieldssurgeries ("higher-kindification")
0.4.0.0
-
Created
Microsurgerymodule. Initial set of surgeries:DerecordifyTypeageRenameFields,RenameConstrs- Some doc about using generic-lens for surgeries
0.3.0.0
- Add generic implementations of
enumFrom,enumFromThen,enumFromTo,enumFromThenTo. They are actually required to be explicit for correctEnuminstances. Thanks to Topsii. - Parameterize
GEnumby a type-level option, and addFiniteEnumoption to allowEnumto be derived for composite types. Thanks to Topsii.
0.2.0.0
- Remove
Generic.Data.Types.Map - Add
Generic.Data.Data.Types.toDataandfromData - Remove
Defunmodule (subsumed byfirst-class-familiespackage)
0.1.1.0
- Add
gconIndex - Interface for constructor tags
- Type-level
Metaaccessors - Add basic
Newtypefunctions
0.1.0.0
Released generic-data