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
Eq
andOrd
forGenerically1
instances. 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
-
Generically
andGenerically1
are in base 4.17 (GHC 9.4.1)!- generic-data reexports
Generically
andGenerically1
if 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:
Semigroup
andMonoid
forGenerically
;Eq1
,Ord1
,Functor
,Applicative
, andAlternative
forGenerically1
. - Note: the
Semigroup
andMonoid
instances of base'sGenerically
are those of generic-data'sGenericProduct
(which is subtly different fromGenerically
's previous instance in generic-data). Generically
andGenerically1
are no longer defined using record syntax, so theunGenerically
(1
) field accessor no longer exists. The field accessors forFiniteEnumeration
andGenericProduct
were 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
Bounded
forFiniteEnumeration
(the same asGenerically
)
0.9.1.0
- Fix
conIdToString
(it was completely broken) - Add
conIdMin
andconIdMax
representing the leftmost and rightmost constructors of a data type. - Add
NonEmptyType
andIsEmptyType
to express the constraint that a generic type must or must not be empty. - Reexport
Generic
andGeneric1
for convenience.
0.9.0.0
-
Improved definition of
gfoldMap
,gtraverse
, andsequenceA
. The optimized Core ofTraversable
instances eliminates allGHC.Generic
instance boilerplate. In many cases, it is identical to the result of GHC'sDeriveFoldable
andDeriveTraversable
extensions (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
to
andfrom
methods of theGeneric
instance 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
Microsurgery
module. - Fix a bug where
gshowsPrec
would incorrectly display prefix uses of symbol data constructors or record selectors (e.g.,data R = (:!:) Int Int
ordata S = MkS { (##) :: Int -> Int }
). Thanks to RyanGlScott. - Fix a bug where
gshowsPrec
would incorrectly display infix uses of alphanumeric data constructors (e.g.,data T = Int `MkT` Int
). Thanks to RyanGlScott.
0.8.1.0
- Add
Old
type family mapping newtypes to their underlying type.
0.8.0.0
-
Add
GenericProduct
, for derivingvia GenericProduct B
whenB
is not the typeA
you want the derived instance for. Note this used to beGenerically
's behavior forMonoid
before 0.7.0.0. -
Add generic implementations for
Ix
. Thanks to Topsii. -
Add
conIdNamed
, to get aConId
by its type-level name -
Add instance
Show (ConId a)
-
Improve type errors for deriving
Semigroup
andMonoid
viaGenerically
. Thanks to yairchu.
0.7.0.0
- Change
Monoid
instance forGenerically
, to be compatible with users' non-generic instances ofSemigroup
. Thanks to yairchu. - Add
gcoerce
,gcoerceBinop
.
0.6.0.1
- Fix derivation of
Show1
for(:.:)
0.6.0.0
- Add
Surgery
newtype for DerivingVia Derecordify
,Typeage
,RenameFields
,RenameConstrs
,OnFields
are no longer type families, but defunctionalized symbols to be applied usingGSurgery
.
0.5.0.0
- Specialize
onData
toData
- Add some instances for
U1
andV1
inMicrosurgery
- Add
OnFields
andDOnFields
surgeries ("higher-kindification")
0.4.0.0
-
Created
Microsurgery
module. Initial set of surgeries:Derecordify
Typeage
RenameFields
,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 correctEnum
instances. Thanks to Topsii. - Parameterize
GEnum
by a type-level option, and addFiniteEnum
option to allowEnum
to be derived for composite types. Thanks to Topsii.
0.2.0.0
- Remove
Generic.Data.Types.Map
- Add
Generic.Data.Data.Types.toData
andfromData
- Remove
Defun
module (subsumed byfirst-class-families
package)
0.1.1.0
- Add
gconIndex
- Interface for constructor tags
- Type-level
Meta
accessors - Add basic
Newtype
functions
0.1.0.0
Released generic-data