optics-0.4 (2021-02-22)
- See migration-guide-0.4.md for more details
- Add support for GHC-9.0
- Drop support for GHC-8.0
- The
FunctorWithIndex
, FoldableWithIndex
and TraversableWithIndex
type
classes have been migrated to a new package,
indexed-traversable
(#370)
- Add
adjoin
, iadjoin
and both
to Optics.[Ix]Traversal
(#332,
#372)
- Add
ifst
and isnd
to Optics.IxLens
(#389)
- Generalize types of
generic
(#376)
- Make
chosen
an indexed lens to see which value is traversed
(#335)
- Remove
GeneralLabelOptic
extensibility mechanism
(#361)
- Add
gfield
, gafield
, gconstructor
, gposition
and gplate
for
generics-based data access
(#358,
#361)
- Add support for generics-based field lenses and constructor prisms (
gfield
and gconstructor
) to LabelOptic
so they can be used via OverloadedLabels
(#361)
- Remove unnecessary INLINE pragmas to reduce compile times
(#394)
- Simplify the type of
(%)
using new JoinKinds
and AppendIndices
classes
in place of the Join
and Append
type families
(#397,
#399)
- Print missing language extensions during TH generation of labels if there are
any (#352)
- Add support for getters of rank1 polymorphic fields to optics generated with
the
makeFieldLabels
family of functions
(#365)
- Extend support of type-changing optics generated with the
makeFieldLabels
family to type parameters that are phantom and applied to non-injective type
families
(#365)
- Fix TH generation of optics for poly-kinded data families
(#378)
- Fix
declareFieldLabels
when a field type refers to a type defined in the
same quote
(#380)
optics-0.3 (2020-04-15)
- GHC-8.10 support
- Add
filteredBy
and unsafeFilteredBy
- Add
FunctorWithIndex
, FoldableWithIndex
and TraversableWithIndex
instances for Const
and Constant
- Add
afoldVL
and iafoldVL
constructors
- Rename
toAtraversalVL
to atraverseOf
, and toIxAtraversalVL
to iatraverseOf
- Generalise
element
and elementOf
to construct IxAffineTraversal
s
instead of IxTraversal
s
- Change
mapping
to work on optic kinds other than Iso
: it now supports
Lens
and Prism
degenerating to Getter
and Review
respectively
- Generalise
ignored
to be an IxAffineTraversal
instead of an IxTraversal
- Add
singular
and isingular
- Add
(^?!)
operator
- Expose
Curry
and CurryCompose
- Show expected elimination forms on optic kind mismatch
- Use stricter
uncurry
for better performance
- Add hidden
LabelOptic
instance to postpone instance resolution
- Add
GeneralLabelOptic
for pluggable generic optics as labels
- Document monoidal structures of
Fold
s
- Remove proxy argument from
implies
- Add
itoList
- Improvements to TH-generated optics:
LabelOptic
instances make optic kind a type equality for better type inference
LabelOptic
instances for field optics work properly in the presence of type families
- Fixed calculation of phantom types in
LabelOptic
prism instances
- Better support for generating optics in the presence of kind polymorphism
optics-0.2 (2019-10-18)
- Add
non
, non'
and anon
to Optics.Iso
ix
can produce optic kinds other than AffineTraversal
- Generalise type of
generic1
- Move
use
from Optics.View
to Optics.State
and restrict its type
- Add
preuse
to Optics.State
- Rename
use
, uses
, listening
and listenings
to reflect the fact that
they have ViewResult
-generalised types
- Add
noPrefixFieldLabels
and noPrefixNamer
to Optics.TH
- Move some internal definitions out to new
indexed-profunctors
package
- Introduce
OpticKind
and IxList
type synonyms for better type inference
- Make
itraverse
for Seq
faster for containers >= 0.6.0
- Assorted documentation improvements
optics-0.1 (2019-09-02)