optics-core 0.4 → 0.4.1
raw patch · 18 files changed
+374/−218 lines, 18 filesdep ~transformersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: transformers
API changes (from Hackage documentation)
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Getter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Getter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Getter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Getter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Getter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Lens
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_AffineTraversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Getter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Traversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineTraversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Lens
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.An_AffineTraversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Prism
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.A_Review
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.A_Review
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Traversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineTraversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Prism
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Review
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.A_ReversedLens
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.A_Review
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_ReversedLens
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Getter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Getter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_ReversedPrism
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_ReversedPrism
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Review
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.A_Review
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.A_Review
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Review
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Traversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Traversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Traversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Traversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Traversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.An_AffineTraversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_AffineTraversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Traversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineTraversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.An_AffineTraversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Getter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Lens
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Prism
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.A_ReversedLens
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_ReversedPrism
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.A_Review
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Setter
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Traversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineFold
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineTraversal
- Optics.Internal.Optic.Subtyping: instance Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.An_Iso
+ Data.Maybe.Optics: (%?) :: (AppendIndices is js ks, JoinKinds k A_Prism k', JoinKinds k' l m) => Optic k is s t (Maybe u) (Maybe v) -> Optic l js u v a b -> Optic m ks s t a b
+ Data.Maybe.Optics: infixl 9 %?
+ Optics.Core.Extras: is :: Is k An_AffineFold => Optic' k is s a -> s -> Bool
+ Optics.Fold: cosmosOf :: forall k is a. Is k A_Fold => Optic' k is a a -> Fold a a
+ Optics.Fold: paraOf :: Is k A_Fold => Optic' k is a a -> (a -> [r] -> r) -> a -> r
+ Optics.Fold: universeOf :: Is k A_Fold => Optic' k is a a -> a -> [a]
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Fold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Getter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Lens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_ReversedPrism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.A_Traversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.An_AffineFold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.An_AffineTraversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Fold Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Fold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Traversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Fold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Fold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Fold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Traversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Fold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Getter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_ReversedPrism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.An_AffineFold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Fold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Traversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Fold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Fold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Fold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Getter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Getter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Getter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Lens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Getter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_ReversedPrism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Getter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Getter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Getter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Getter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_ReversedPrism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Getter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Getter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Getter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Lens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Getter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Getter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Lens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Lens) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Lens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Prism) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Prism) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Prism) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_ReversedLens) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.A_ReversedLens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_ReversedLens) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_ReversedLens) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_ReversedLens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_ReversedPrism) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_ReversedPrism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_ReversedPrism) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_ReversedPrism) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_ReversedPrism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Review) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_ReversedLens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Review) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Review k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Review) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Review) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedLens Optics.Internal.Optic.Types.A_Review k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Review) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Review) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.A_ReversedLens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Review) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.A_Review k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Review) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Review Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Review) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Review k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Setter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Setter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Lens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Setter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.A_Traversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.An_AffineTraversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Setter Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Setter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Setter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Setter) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Setter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Traversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Traversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Traversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Traversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Traversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Lens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Traversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Traversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.A_Traversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Traversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.An_AffineTraversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Traversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Traversal Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Traversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Traversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.A_Traversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.A_Traversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.An_AffineFold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Getter Optics.Internal.Optic.Types.An_AffineTraversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.An_AffineFold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Getter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_ReversedPrism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_AffineFold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.An_AffineFold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_ReversedPrism Optics.Internal.Optic.Types.An_AffineTraversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Getter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Lens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.A_ReversedPrism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineFold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_AffineTraversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineFold Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Getter k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_ReversedPrism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineFold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineFold) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.An_AffineFold k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineTraversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineTraversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Lens Optics.Internal.Optic.Types.An_AffineTraversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineTraversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.A_Lens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineTraversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.A_Prism Optics.Internal.Optic.Types.An_AffineTraversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineTraversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Lens k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineTraversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.A_Prism k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineTraversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_AffineTraversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineTraversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_AffineTraversal Optics.Internal.Optic.Types.An_Iso k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_AffineTraversal) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.An_AffineTraversal k
+ Optics.Internal.Optic.Subtyping: instance (k GHC.Types.~ Optics.Internal.Optic.Types.An_Iso) => Optics.Internal.Optic.Subtyping.JoinKinds Optics.Internal.Optic.Types.An_Iso Optics.Internal.Optic.Types.An_Iso k
+ Optics.Setter: rewriteOf :: Is k A_Setter => Optic k is a b a b -> (b -> Maybe a) -> a -> b
+ Optics.Setter: transformOf :: Is k A_Setter => Optic k is a b a b -> (b -> b) -> a -> b
+ Optics.Traversal: rewriteMOf :: (Is k A_Traversal, Monad m) => Optic k is a b a b -> (b -> m (Maybe a)) -> a -> m b
+ Optics.Traversal: transformMOf :: (Is k A_Traversal, Monad m) => Optic k is a b a b -> (b -> m b) -> a -> m b
- Optics.Internal.Generic: gconstructorTuple :: GConstructorTuple g h a b => Prism (g x) (h x) a b
+ Optics.Internal.Generic: gconstructorTuple :: GConstructorTuple g h a b => Iso (g x) (h x) a b
Files
- CHANGELOG.md +11/−0
- optics-core.cabal +38/−23
- src/Data/List/Optics.hs +2/−2
- src/Data/Maybe/Optics.hs +16/−0
- src/Numeric/Optics.hs +0/−2
- src/Optics/AffineFold.hs +3/−1
- src/Optics/Cons/Core.hs +0/−2
- src/Optics/Core/Extras.hs +23/−0
- src/Optics/Empty/Core.hs +0/−2
- src/Optics/Fold.hs +33/−0
- src/Optics/Generic.hs +0/−2
- src/Optics/Internal/Generic.hs +8/−9
- src/Optics/Internal/Optic/Subtyping.hs +144/−144
- src/Optics/Label.hs +26/−23
- src/Optics/Optic.hs +2/−2
- src/Optics/Prism.hs +7/−5
- src/Optics/Setter.hs +31/−0
- src/Optics/Traversal.hs +30/−1
CHANGELOG.md view
@@ -1,3 +1,14 @@+# optics-core-0.4.1 (2022-03-22)+* Add support for GHC-9.2+* Add `is` ([#410](https://github.com/well-typed/optics/pull/410))+* Improve error messages related to the `JoinKinds` class+ ([#439](https://github.com/well-typed/optics/pull/439))+* Port `universeOf`, `cosmosOf`, `paraOf`, `rewriteOf`, `transformOf`,+ `rewriteMOf` and `transformMOf` from `Control.Lens.Plated`+ ([#379](https://github.com/well-typed/optics/pull/379))+* Add `(%?)` composition operator+ ([#434](https://github.com/well-typed/optics/pull/434))+ # optics-core-0.4 (2021-02-22) * See [migration-guide-0.4.md](https://github.com/well-typed/optics/blob/master/migration-guide-0.4.md) for more details * Add support for GHC-9.0
optics-core.cabal view
@@ -1,12 +1,13 @@+cabal-version: 2.2 name: optics-core-version: 0.4-license: BSD3+version: 0.4.1+license: BSD-3-Clause license-file: LICENSE build-type: Simple-cabal-version: 1.24 maintainer: optics@well-typed.com author: Adam Gundry, Andres Löh, Andrzej Rybczak, Oleg Grenrus-tested-with: GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.3, GHCJS ==8.4+tested-with: GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7+ || ==9.0.2 || ==9.2.2, GHCJS ==8.4 synopsis: Optics as an abstract interface: core definitions category: Data, Optics, Lenses description:@@ -32,10 +33,40 @@ manual: True description: Require explicit GenericLabelOptics instances in order to use generics-based labels +common language+ ghc-options: -Wall -Wcompat++ default-language: Haskell2010++ default-extensions: BangPatterns+ ConstraintKinds+ DefaultSignatures+ DeriveFoldable+ DeriveFunctor+ DeriveGeneric+ DeriveTraversable+ EmptyCase+ FlexibleContexts+ FlexibleInstances+ FunctionalDependencies+ GADTs+ GeneralizedNewtypeDeriving+ InstanceSigs+ KindSignatures+ LambdaCase+ OverloadedLabels+ PatternSynonyms+ RankNTypes+ ScopedTypeVariables+ TupleSections+ TypeApplications+ TypeFamilies+ TypeOperators+ ViewPatterns+ library- default-language: Haskell2010+ import: language hs-source-dirs: src- ghc-options: -Wall if flag(explicit-generic-labels) cpp-options: -DEXPLICIT_GENERIC_LABELS@@ -88,6 +119,7 @@ Optics.Operators.Unsafe Optics.Re Optics.ReadOnly+ Optics.Core.Extras -- optics for data types Data.Either.Optics@@ -122,20 +154,3 @@ Optics.Internal.Setter Optics.Internal.Traversal Optics.Internal.Utils-- default-extensions: BangPatterns- DefaultSignatures- DeriveFunctor- FlexibleContexts- FlexibleInstances- FunctionalDependencies- GADTs- InstanceSigs- LambdaCase- MultiParamTypeClasses- RankNTypes- ScopedTypeVariables- TupleSections- TypeApplications- TypeFamilies- TypeOperators
src/Data/List/Optics.hs view
@@ -70,7 +70,7 @@ ) where import Control.Monad (guard)-import Data.List+import qualified Data.List as L import Optics.Prism @@ -86,7 +86,7 @@ -- >>> prefixed "pre" # "amble" -- "preamble" prefixed :: Eq a => [a] -> Prism' [a] [a]-prefixed ps = prism' (ps ++) (stripPrefix ps)+prefixed ps = prism' (ps ++) (L.stripPrefix ps) {-# INLINE prefixed #-} -- | A 'Prism' stripping a suffix from a list when used as a
src/Data/Maybe/Optics.hs view
@@ -6,9 +6,11 @@ module Data.Maybe.Optics ( _Nothing , _Just+ , (%?) ) where +import Optics.Internal.Optic import Optics.Prism -- | A 'Prism' that matches on the 'Nothing' constructor of 'Maybe'.@@ -34,3 +36,17 @@ Just y -> Right y ) {-# INLINE _Just #-}++-- | Shortcut for @'%' '_Just' '%'@.+--+-- Useful for composing lenses of 'Maybe' type.+--+-- @since 0.4.1+infixl 9 %?+(%?)+ :: (AppendIndices is js ks, JoinKinds k A_Prism k', JoinKinds k' l m)+ => Optic k is s t (Maybe u) (Maybe v)+ -> Optic l js u v a b+ -> Optic m ks s t a b+o1 %? o2 = o1 % _Just % o2+{-# INLINE (%?) #-}
src/Numeric/Optics.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE PatternSynonyms #-}-{-# LANGUAGE ViewPatterns #-} -- | -- Module: Numeric.Optics -- Description: Optics for working with numeric types.
src/Optics/AffineFold.hs view
@@ -147,8 +147,10 @@ -- >>> isn't _Just Nothing -- True --+-- The negation of this operator is 'Optics.Core.Extras.is' from+-- "Optics.Core.Extras". isn't :: Is k An_AffineFold => Optic' k is s a -> s -> Bool-isn't k s = not (isJust (preview k s))+isn't k s = isNothing (preview k s) {-# INLINE isn't #-} -- $setup
src/Optics/Cons/Core.hs view
@@ -9,8 +9,6 @@ -- module from @optics-extra@, so if you are not simply depending on @optics@ -- you may wish to import that module instead. ---{-# LANGUAGE PatternSynonyms #-}-{-# LANGUAGE ViewPatterns #-} module Optics.Cons.Core ( -- * Cons
+ src/Optics/Core/Extras.hs view
@@ -0,0 +1,23 @@+module Optics.Core.Extras+ (+ is+ )+ where++import Data.Maybe++import Optics.Optic+import Optics.AffineFold++-- | Check to see if this 'AffineFold' matches.+--+-- >>> is _Just Nothing+-- False+--+-- @since 0.4.1+is :: Is k An_AffineFold => Optic' k is s a -> s -> Bool+is k s = isJust (preview k s)+{-# INLINE is #-}++-- $setup+-- >>> import Optics.Core
src/Optics/Empty/Core.hs view
@@ -16,8 +16,6 @@ -- True -- {-# LANGUAGE CPP #-}-{-# LANGUAGE PatternSynonyms #-}-{-# LANGUAGE ViewPatterns #-} module Optics.Empty.Core ( AsEmpty(..) , pattern Empty
src/Optics/Fold.hs view
@@ -70,6 +70,9 @@ , findOf , findMOf , lookupOf+ , universeOf+ , cosmosOf+ , paraOf -- * Combinators , pre@@ -674,6 +677,36 @@ lookupOf :: (Is k A_Fold, Eq a) => Optic' k is s (a, v) -> a -> s -> Maybe v lookupOf o a = foldrOf o (\(a', v) next -> if a == a' then Just v else next) Nothing {-# INLINE lookupOf #-}++-- | Given a 'Fold' that knows how to locate immediate children, retrieve all of+-- the transitive descendants of a node, including itself.+--+-- @since 0.4.1+universeOf :: Is k A_Fold => Optic' k is a a -> a -> [a]+universeOf o = (`appEndo` []) . go+ where+ go a = Endo (a :) <> foldMapOf o go a+{-# INLINE universeOf #-}++-- | Given a 'Fold' that knows how to locate immediate children, fold all of the+-- transitive descendants of a node, including itself.+--+-- @since 0.4.1+cosmosOf :: forall k is a. Is k A_Fold => Optic' k is a a -> Fold a a+cosmosOf o = foldVL go+ where+ go :: Applicative f => (a -> f ()) -> a -> f ()+ go f a = f a *> traverseOf_ o (go f) a+{-# INLINE cosmosOf #-}++-- | Perform a fold-like computation on each value, technically a paramorphism.+--+-- @since 0.4.1+paraOf :: Is k A_Fold => Optic' k is a a -> (a -> [r] -> r) -> a -> r+paraOf o f = go+ where+ go a = f a (go <$> toListOf o a)+{-# INLINE paraOf #-} -- $setup -- >>> import Optics.Core
src/Optics/Generic.hs view
@@ -1,7 +1,5 @@ {-# LANGUAGE AllowAmbiguousTypes #-}-{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DataKinds #-}-{-# LANGUAGE EmptyCase #-} {-# LANGUAGE UndecidableInstances #-} -- | -- Module: Optics.Generic
src/Optics/Internal/Generic.hs view
@@ -1,6 +1,5 @@ {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-}-{-# LANGUAGE EmptyCase #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_HADDOCK not-home #-} @@ -426,13 +425,13 @@ instance ( GConstructorTuple g h a b ) => GConstructorSum '[] (M1 C m g) (M1 C m h) a b where- gconstructorSum = _M1 % gconstructorTuple+ gconstructorSum = castOptic (_M1 % gconstructorTuple) class GConstructorTuple g h a b | g -> a , h -> b , g b -> h , h a -> g where- gconstructorTuple :: Prism (g x) (h x) a b+ gconstructorTuple :: Iso (g x) (h x) a b -- Fon uncluttering types in below instances a bit. type F m a = M1 S m (Rec0 a)@@ -450,14 +449,14 @@ ( a ~ () , b ~ () ) => GConstructorTuple U1 U1 a b where- gconstructorTuple = castOptic _U1+ gconstructorTuple = _U1 {-# INLINE gconstructorTuple #-} instance ( r ~ a , s ~ b ) => GConstructorTuple (F m a) (F m b) r s where- gconstructorTuple = castOptic coerced+ gconstructorTuple = coerced {-# INLINE gconstructorTuple #-} instance@@ -466,7 +465,7 @@ ) => GConstructorTuple (F m1 a1 :*: F m2 a2) (F m1 b1 :*: F m2 b2) r s where- gconstructorTuple = castOptic $ iso+ gconstructorTuple = iso (\(M1 (K1 a1) :*: M1 (K1 a2)) -> (a1, a2)) (\(b1, b2) -> M1 (K1 b1) :*: M1 (K1 b2)) {-# INLINE gconstructorTuple #-}@@ -478,7 +477,7 @@ ) => GConstructorTuple (F m1 a1 :*: F m2 a2 :*: F m3 a3) (F m1 b1 :*: F m2 b2 :*: F m3 b3) r s where- gconstructorTuple = castOptic $ iso+ gconstructorTuple = iso (\(M1 (K1 a1) :*: M1 (K1 a2) :*: M1 (K1 a3)) -> (a1, a2, a3)) (\(b1, b2, b3) -> M1 (K1 b1) :*: M1 (K1 b2) :*: M1 (K1 b3)) {-# INLINE gconstructorTuple #-}@@ -490,7 +489,7 @@ ) => GConstructorTuple ((F m1 a1 :*: F m2 a2) :*: (F m3 a3 :*: F m4 a4)) ((F m1 b1 :*: F m2 b2) :*: (F m3 b3 :*: F m4 b4)) r s where- gconstructorTuple = castOptic $ iso+ gconstructorTuple = iso (\((M1 (K1 a1) :*: M1 (K1 a2)) :*: (M1 (K1 a3) :*: M1 (K1 a4))) -> (a1, a2, a3, a4)) (\(b1, b2, b3, b4) -> (M1 (K1 b1) :*: M1 (K1 b2)) :*: (M1 (K1 b3) :*: M1 (K1 b4))) {-# INLINE gconstructorTuple #-}@@ -502,7 +501,7 @@ ) => GConstructorTuple ((F m1 a1 :*: F m2 a2) :*: (F m3 a3 :*: F m4 a4 :*: F m5 a5)) ((F m1 b1 :*: F m2 b2) :*: (F m3 b3 :*: F m4 b4 :*: F m5 b5)) r s where- gconstructorTuple = castOptic $ iso+ gconstructorTuple = iso (\((M1 (K1 a1) :*: M1 (K1 a2)) :*: (M1 (K1 a3) :*: M1 (K1 a4) :*: M1 (K1 a5))) -> (a1, a2, a3, a4, a5)) (\(b1, b2, b3, b4, b5) ->
src/Optics/Internal/Optic/Subtyping.hs view
@@ -159,276 +159,276 @@ -- BEGIN GENERATED CONTENT -- An_Iso ------instance JoinKinds An_Iso An_Iso An_Iso where+instance k ~ An_Iso => JoinKinds An_Iso An_Iso k where joinKinds r = r-instance JoinKinds An_Iso A_ReversedLens A_ReversedLens where+instance k ~ A_ReversedLens => JoinKinds An_Iso A_ReversedLens k where joinKinds r = r-instance JoinKinds An_Iso A_ReversedPrism A_ReversedPrism where+instance k ~ A_ReversedPrism => JoinKinds An_Iso A_ReversedPrism k where joinKinds r = r-instance JoinKinds An_Iso A_Prism A_Prism where+instance k ~ A_Prism => JoinKinds An_Iso A_Prism k where joinKinds r = r-instance JoinKinds An_Iso A_Review A_Review where+instance k ~ A_Review => JoinKinds An_Iso A_Review k where joinKinds r = r-instance JoinKinds An_Iso A_Lens A_Lens where+instance k ~ A_Lens => JoinKinds An_Iso A_Lens k where joinKinds r = r-instance JoinKinds An_Iso A_Getter A_Getter where+instance k ~ A_Getter => JoinKinds An_Iso A_Getter k where joinKinds r = r-instance JoinKinds An_Iso An_AffineTraversal An_AffineTraversal where+instance k ~ An_AffineTraversal => JoinKinds An_Iso An_AffineTraversal k where joinKinds r = r-instance JoinKinds An_Iso An_AffineFold An_AffineFold where+instance k ~ An_AffineFold => JoinKinds An_Iso An_AffineFold k where joinKinds r = r-instance JoinKinds An_Iso A_Traversal A_Traversal where+instance k ~ A_Traversal => JoinKinds An_Iso A_Traversal k where joinKinds r = r-instance JoinKinds An_Iso A_Fold A_Fold where+instance k ~ A_Fold => JoinKinds An_Iso A_Fold k where joinKinds r = r-instance JoinKinds An_Iso A_Setter A_Setter where+instance k ~ A_Setter => JoinKinds An_Iso A_Setter k where joinKinds r = r -- A_ReversedLens ------instance JoinKinds A_ReversedLens A_ReversedLens A_ReversedLens where+instance k ~ A_ReversedLens => JoinKinds A_ReversedLens A_ReversedLens k where joinKinds r = r-instance JoinKinds A_ReversedLens An_Iso A_ReversedLens where+instance k ~ A_ReversedLens => JoinKinds A_ReversedLens An_Iso k where joinKinds r = r--- no JoinKinds A_ReversedLens A_ReversedPrism-instance JoinKinds A_ReversedLens A_Prism A_Review where+-- no JoinKinds A_ReversedLens A_ReversedPrism+instance k ~ A_Review => JoinKinds A_ReversedLens A_Prism k where joinKinds r = r-instance JoinKinds A_ReversedLens A_Review A_Review where+instance k ~ A_Review => JoinKinds A_ReversedLens A_Review k where joinKinds r = r--- no JoinKinds A_ReversedLens A_Lens--- no JoinKinds A_ReversedLens A_Getter--- no JoinKinds A_ReversedLens An_AffineTraversal--- no JoinKinds A_ReversedLens An_AffineFold--- no JoinKinds A_ReversedLens A_Traversal--- no JoinKinds A_ReversedLens A_Fold--- no JoinKinds A_ReversedLens A_Setter+-- no JoinKinds A_ReversedLens A_Lens+-- no JoinKinds A_ReversedLens A_Getter+-- no JoinKinds A_ReversedLens An_AffineTraversal+-- no JoinKinds A_ReversedLens An_AffineFold+-- no JoinKinds A_ReversedLens A_Traversal+-- no JoinKinds A_ReversedLens A_Fold+-- no JoinKinds A_ReversedLens A_Setter -- A_ReversedPrism ------instance JoinKinds A_ReversedPrism A_ReversedPrism A_ReversedPrism where+instance k ~ A_ReversedPrism => JoinKinds A_ReversedPrism A_ReversedPrism k where joinKinds r = r-instance JoinKinds A_ReversedPrism An_Iso A_ReversedPrism where+instance k ~ A_ReversedPrism => JoinKinds A_ReversedPrism An_Iso k where joinKinds r = r--- no JoinKinds A_ReversedPrism A_ReversedLens-instance JoinKinds A_ReversedPrism A_Prism An_AffineFold where+-- no JoinKinds A_ReversedPrism A_ReversedLens+instance k ~ An_AffineFold => JoinKinds A_ReversedPrism A_Prism k where joinKinds r = r--- no JoinKinds A_ReversedPrism A_Review-instance JoinKinds A_ReversedPrism A_Lens A_Getter where+-- no JoinKinds A_ReversedPrism A_Review+instance k ~ A_Getter => JoinKinds A_ReversedPrism A_Lens k where joinKinds r = r-instance JoinKinds A_ReversedPrism A_Getter A_Getter where+instance k ~ A_Getter => JoinKinds A_ReversedPrism A_Getter k where joinKinds r = r-instance JoinKinds A_ReversedPrism An_AffineTraversal An_AffineFold where+instance k ~ An_AffineFold => JoinKinds A_ReversedPrism An_AffineTraversal k where joinKinds r = r-instance JoinKinds A_ReversedPrism An_AffineFold An_AffineFold where+instance k ~ An_AffineFold => JoinKinds A_ReversedPrism An_AffineFold k where joinKinds r = r-instance JoinKinds A_ReversedPrism A_Traversal A_Fold where+instance k ~ A_Fold => JoinKinds A_ReversedPrism A_Traversal k where joinKinds r = r-instance JoinKinds A_ReversedPrism A_Fold A_Fold where+instance k ~ A_Fold => JoinKinds A_ReversedPrism A_Fold k where joinKinds r = r--- no JoinKinds A_ReversedPrism A_Setter+-- no JoinKinds A_ReversedPrism A_Setter -- A_Prism ------instance JoinKinds A_Prism A_Prism A_Prism where+instance k ~ A_Prism => JoinKinds A_Prism A_Prism k where joinKinds r = r-instance JoinKinds A_Prism An_Iso A_Prism where+instance k ~ A_Prism => JoinKinds A_Prism An_Iso k where joinKinds r = r-instance JoinKinds A_Prism A_ReversedLens A_Review where+instance k ~ A_Review => JoinKinds A_Prism A_ReversedLens k where joinKinds r = r-instance JoinKinds A_Prism A_ReversedPrism An_AffineFold where+instance k ~ An_AffineFold => JoinKinds A_Prism A_ReversedPrism k where joinKinds r = r-instance JoinKinds A_Prism A_Review A_Review where+instance k ~ A_Review => JoinKinds A_Prism A_Review k where joinKinds r = r-instance JoinKinds A_Prism A_Lens An_AffineTraversal where+instance k ~ An_AffineTraversal => JoinKinds A_Prism A_Lens k where joinKinds r = r-instance JoinKinds A_Prism A_Getter An_AffineFold where+instance k ~ An_AffineFold => JoinKinds A_Prism A_Getter k where joinKinds r = r-instance JoinKinds A_Prism An_AffineTraversal An_AffineTraversal where+instance k ~ An_AffineTraversal => JoinKinds A_Prism An_AffineTraversal k where joinKinds r = r-instance JoinKinds A_Prism An_AffineFold An_AffineFold where+instance k ~ An_AffineFold => JoinKinds A_Prism An_AffineFold k where joinKinds r = r-instance JoinKinds A_Prism A_Traversal A_Traversal where+instance k ~ A_Traversal => JoinKinds A_Prism A_Traversal k where joinKinds r = r-instance JoinKinds A_Prism A_Fold A_Fold where+instance k ~ A_Fold => JoinKinds A_Prism A_Fold k where joinKinds r = r-instance JoinKinds A_Prism A_Setter A_Setter where+instance k ~ A_Setter => JoinKinds A_Prism A_Setter k where joinKinds r = r -- A_Review ------instance JoinKinds A_Review A_Review A_Review where+instance k ~ A_Review => JoinKinds A_Review A_Review k where joinKinds r = r-instance JoinKinds A_Review An_Iso A_Review where+instance k ~ A_Review => JoinKinds A_Review An_Iso k where joinKinds r = r-instance JoinKinds A_Review A_ReversedLens A_Review where+instance k ~ A_Review => JoinKinds A_Review A_ReversedLens k where joinKinds r = r--- no JoinKinds A_Review A_ReversedPrism-instance JoinKinds A_Review A_Prism A_Review where+-- no JoinKinds A_Review A_ReversedPrism+instance k ~ A_Review => JoinKinds A_Review A_Prism k where joinKinds r = r--- no JoinKinds A_Review A_Lens--- no JoinKinds A_Review A_Getter--- no JoinKinds A_Review An_AffineTraversal--- no JoinKinds A_Review An_AffineFold--- no JoinKinds A_Review A_Traversal--- no JoinKinds A_Review A_Fold--- no JoinKinds A_Review A_Setter+-- no JoinKinds A_Review A_Lens+-- no JoinKinds A_Review A_Getter+-- no JoinKinds A_Review An_AffineTraversal+-- no JoinKinds A_Review An_AffineFold+-- no JoinKinds A_Review A_Traversal+-- no JoinKinds A_Review A_Fold+-- no JoinKinds A_Review A_Setter -- A_Lens ------instance JoinKinds A_Lens A_Lens A_Lens where+instance k ~ A_Lens => JoinKinds A_Lens A_Lens k where joinKinds r = r-instance JoinKinds A_Lens An_Iso A_Lens where+instance k ~ A_Lens => JoinKinds A_Lens An_Iso k where joinKinds r = r--- no JoinKinds A_Lens A_ReversedLens-instance JoinKinds A_Lens A_ReversedPrism A_Getter where+-- no JoinKinds A_Lens A_ReversedLens+instance k ~ A_Getter => JoinKinds A_Lens A_ReversedPrism k where joinKinds r = r-instance JoinKinds A_Lens A_Prism An_AffineTraversal where+instance k ~ An_AffineTraversal => JoinKinds A_Lens A_Prism k where joinKinds r = r--- no JoinKinds A_Lens A_Review-instance JoinKinds A_Lens A_Getter A_Getter where+-- no JoinKinds A_Lens A_Review+instance k ~ A_Getter => JoinKinds A_Lens A_Getter k where joinKinds r = r-instance JoinKinds A_Lens An_AffineTraversal An_AffineTraversal where+instance k ~ An_AffineTraversal => JoinKinds A_Lens An_AffineTraversal k where joinKinds r = r-instance JoinKinds A_Lens An_AffineFold An_AffineFold where+instance k ~ An_AffineFold => JoinKinds A_Lens An_AffineFold k where joinKinds r = r-instance JoinKinds A_Lens A_Traversal A_Traversal where+instance k ~ A_Traversal => JoinKinds A_Lens A_Traversal k where joinKinds r = r-instance JoinKinds A_Lens A_Fold A_Fold where+instance k ~ A_Fold => JoinKinds A_Lens A_Fold k where joinKinds r = r-instance JoinKinds A_Lens A_Setter A_Setter where+instance k ~ A_Setter => JoinKinds A_Lens A_Setter k where joinKinds r = r -- A_Getter ------instance JoinKinds A_Getter A_Getter A_Getter where+instance k ~ A_Getter => JoinKinds A_Getter A_Getter k where joinKinds r = r-instance JoinKinds A_Getter An_Iso A_Getter where+instance k ~ A_Getter => JoinKinds A_Getter An_Iso k where joinKinds r = r--- no JoinKinds A_Getter A_ReversedLens-instance JoinKinds A_Getter A_ReversedPrism A_Getter where+-- no JoinKinds A_Getter A_ReversedLens+instance k ~ A_Getter => JoinKinds A_Getter A_ReversedPrism k where joinKinds r = r-instance JoinKinds A_Getter A_Prism An_AffineFold where+instance k ~ An_AffineFold => JoinKinds A_Getter A_Prism k where joinKinds r = r--- no JoinKinds A_Getter A_Review-instance JoinKinds A_Getter A_Lens A_Getter where+-- no JoinKinds A_Getter A_Review+instance k ~ A_Getter => JoinKinds A_Getter A_Lens k where joinKinds r = r-instance JoinKinds A_Getter An_AffineTraversal An_AffineFold where+instance k ~ An_AffineFold => JoinKinds A_Getter An_AffineTraversal k where joinKinds r = r-instance JoinKinds A_Getter An_AffineFold An_AffineFold where+instance k ~ An_AffineFold => JoinKinds A_Getter An_AffineFold k where joinKinds r = r-instance JoinKinds A_Getter A_Traversal A_Fold where+instance k ~ A_Fold => JoinKinds A_Getter A_Traversal k where joinKinds r = r-instance JoinKinds A_Getter A_Fold A_Fold where+instance k ~ A_Fold => JoinKinds A_Getter A_Fold k where joinKinds r = r--- no JoinKinds A_Getter A_Setter+-- no JoinKinds A_Getter A_Setter -- An_AffineTraversal ------instance JoinKinds An_AffineTraversal An_AffineTraversal An_AffineTraversal where+instance k ~ An_AffineTraversal => JoinKinds An_AffineTraversal An_AffineTraversal k where joinKinds r = r-instance JoinKinds An_AffineTraversal An_Iso An_AffineTraversal where+instance k ~ An_AffineTraversal => JoinKinds An_AffineTraversal An_Iso k where joinKinds r = r--- no JoinKinds An_AffineTraversal A_ReversedLens-instance JoinKinds An_AffineTraversal A_ReversedPrism An_AffineFold where+-- no JoinKinds An_AffineTraversal A_ReversedLens+instance k ~ An_AffineFold => JoinKinds An_AffineTraversal A_ReversedPrism k where joinKinds r = r-instance JoinKinds An_AffineTraversal A_Prism An_AffineTraversal where+instance k ~ An_AffineTraversal => JoinKinds An_AffineTraversal A_Prism k where joinKinds r = r--- no JoinKinds An_AffineTraversal A_Review-instance JoinKinds An_AffineTraversal A_Lens An_AffineTraversal where+-- no JoinKinds An_AffineTraversal A_Review+instance k ~ An_AffineTraversal => JoinKinds An_AffineTraversal A_Lens k where joinKinds r = r-instance JoinKinds An_AffineTraversal A_Getter An_AffineFold where+instance k ~ An_AffineFold => JoinKinds An_AffineTraversal A_Getter k where joinKinds r = r-instance JoinKinds An_AffineTraversal An_AffineFold An_AffineFold where+instance k ~ An_AffineFold => JoinKinds An_AffineTraversal An_AffineFold k where joinKinds r = r-instance JoinKinds An_AffineTraversal A_Traversal A_Traversal where+instance k ~ A_Traversal => JoinKinds An_AffineTraversal A_Traversal k where joinKinds r = r-instance JoinKinds An_AffineTraversal A_Fold A_Fold where+instance k ~ A_Fold => JoinKinds An_AffineTraversal A_Fold k where joinKinds r = r-instance JoinKinds An_AffineTraversal A_Setter A_Setter where+instance k ~ A_Setter => JoinKinds An_AffineTraversal A_Setter k where joinKinds r = r -- An_AffineFold ------instance JoinKinds An_AffineFold An_AffineFold An_AffineFold where+instance k ~ An_AffineFold => JoinKinds An_AffineFold An_AffineFold k where joinKinds r = r-instance JoinKinds An_AffineFold An_Iso An_AffineFold where+instance k ~ An_AffineFold => JoinKinds An_AffineFold An_Iso k where joinKinds r = r--- no JoinKinds An_AffineFold A_ReversedLens-instance JoinKinds An_AffineFold A_ReversedPrism An_AffineFold where+-- no JoinKinds An_AffineFold A_ReversedLens+instance k ~ An_AffineFold => JoinKinds An_AffineFold A_ReversedPrism k where joinKinds r = r-instance JoinKinds An_AffineFold A_Prism An_AffineFold where+instance k ~ An_AffineFold => JoinKinds An_AffineFold A_Prism k where joinKinds r = r--- no JoinKinds An_AffineFold A_Review-instance JoinKinds An_AffineFold A_Lens An_AffineFold where+-- no JoinKinds An_AffineFold A_Review+instance k ~ An_AffineFold => JoinKinds An_AffineFold A_Lens k where joinKinds r = r-instance JoinKinds An_AffineFold A_Getter An_AffineFold where+instance k ~ An_AffineFold => JoinKinds An_AffineFold A_Getter k where joinKinds r = r-instance JoinKinds An_AffineFold An_AffineTraversal An_AffineFold where+instance k ~ An_AffineFold => JoinKinds An_AffineFold An_AffineTraversal k where joinKinds r = r-instance JoinKinds An_AffineFold A_Traversal A_Fold where+instance k ~ A_Fold => JoinKinds An_AffineFold A_Traversal k where joinKinds r = r-instance JoinKinds An_AffineFold A_Fold A_Fold where+instance k ~ A_Fold => JoinKinds An_AffineFold A_Fold k where joinKinds r = r--- no JoinKinds An_AffineFold A_Setter+-- no JoinKinds An_AffineFold A_Setter -- A_Traversal ------instance JoinKinds A_Traversal A_Traversal A_Traversal where+instance k ~ A_Traversal => JoinKinds A_Traversal A_Traversal k where joinKinds r = r-instance JoinKinds A_Traversal An_Iso A_Traversal where+instance k ~ A_Traversal => JoinKinds A_Traversal An_Iso k where joinKinds r = r--- no JoinKinds A_Traversal A_ReversedLens-instance JoinKinds A_Traversal A_ReversedPrism A_Fold where+-- no JoinKinds A_Traversal A_ReversedLens+instance k ~ A_Fold => JoinKinds A_Traversal A_ReversedPrism k where joinKinds r = r-instance JoinKinds A_Traversal A_Prism A_Traversal where+instance k ~ A_Traversal => JoinKinds A_Traversal A_Prism k where joinKinds r = r--- no JoinKinds A_Traversal A_Review-instance JoinKinds A_Traversal A_Lens A_Traversal where+-- no JoinKinds A_Traversal A_Review+instance k ~ A_Traversal => JoinKinds A_Traversal A_Lens k where joinKinds r = r-instance JoinKinds A_Traversal A_Getter A_Fold where+instance k ~ A_Fold => JoinKinds A_Traversal A_Getter k where joinKinds r = r-instance JoinKinds A_Traversal An_AffineTraversal A_Traversal where+instance k ~ A_Traversal => JoinKinds A_Traversal An_AffineTraversal k where joinKinds r = r-instance JoinKinds A_Traversal An_AffineFold A_Fold where+instance k ~ A_Fold => JoinKinds A_Traversal An_AffineFold k where joinKinds r = r-instance JoinKinds A_Traversal A_Fold A_Fold where+instance k ~ A_Fold => JoinKinds A_Traversal A_Fold k where joinKinds r = r-instance JoinKinds A_Traversal A_Setter A_Setter where+instance k ~ A_Setter => JoinKinds A_Traversal A_Setter k where joinKinds r = r -- A_Fold ------instance JoinKinds A_Fold A_Fold A_Fold where+instance k ~ A_Fold => JoinKinds A_Fold A_Fold k where joinKinds r = r-instance JoinKinds A_Fold An_Iso A_Fold where+instance k ~ A_Fold => JoinKinds A_Fold An_Iso k where joinKinds r = r--- no JoinKinds A_Fold A_ReversedLens-instance JoinKinds A_Fold A_ReversedPrism A_Fold where+-- no JoinKinds A_Fold A_ReversedLens+instance k ~ A_Fold => JoinKinds A_Fold A_ReversedPrism k where joinKinds r = r-instance JoinKinds A_Fold A_Prism A_Fold where+instance k ~ A_Fold => JoinKinds A_Fold A_Prism k where joinKinds r = r--- no JoinKinds A_Fold A_Review-instance JoinKinds A_Fold A_Lens A_Fold where+-- no JoinKinds A_Fold A_Review+instance k ~ A_Fold => JoinKinds A_Fold A_Lens k where joinKinds r = r-instance JoinKinds A_Fold A_Getter A_Fold where+instance k ~ A_Fold => JoinKinds A_Fold A_Getter k where joinKinds r = r-instance JoinKinds A_Fold An_AffineTraversal A_Fold where+instance k ~ A_Fold => JoinKinds A_Fold An_AffineTraversal k where joinKinds r = r-instance JoinKinds A_Fold An_AffineFold A_Fold where+instance k ~ A_Fold => JoinKinds A_Fold An_AffineFold k where joinKinds r = r-instance JoinKinds A_Fold A_Traversal A_Fold where+instance k ~ A_Fold => JoinKinds A_Fold A_Traversal k where joinKinds r = r--- no JoinKinds A_Fold A_Setter+-- no JoinKinds A_Fold A_Setter -- A_Setter ------instance JoinKinds A_Setter A_Setter A_Setter where+instance k ~ A_Setter => JoinKinds A_Setter A_Setter k where joinKinds r = r-instance JoinKinds A_Setter An_Iso A_Setter where+instance k ~ A_Setter => JoinKinds A_Setter An_Iso k where joinKinds r = r--- no JoinKinds A_Setter A_ReversedLens--- no JoinKinds A_Setter A_ReversedPrism-instance JoinKinds A_Setter A_Prism A_Setter where+-- no JoinKinds A_Setter A_ReversedLens+-- no JoinKinds A_Setter A_ReversedPrism+instance k ~ A_Setter => JoinKinds A_Setter A_Prism k where joinKinds r = r--- no JoinKinds A_Setter A_Review-instance JoinKinds A_Setter A_Lens A_Setter where+-- no JoinKinds A_Setter A_Review+instance k ~ A_Setter => JoinKinds A_Setter A_Lens k where joinKinds r = r--- no JoinKinds A_Setter A_Getter-instance JoinKinds A_Setter An_AffineTraversal A_Setter where+-- no JoinKinds A_Setter A_Getter+instance k ~ A_Setter => JoinKinds A_Setter An_AffineTraversal k where joinKinds r = r--- no JoinKinds A_Setter An_AffineFold-instance JoinKinds A_Setter A_Traversal A_Setter where+-- no JoinKinds A_Setter An_AffineFold+instance k ~ A_Setter => JoinKinds A_Setter A_Traversal k where joinKinds r = r--- no JoinKinds A_Setter A_Fold+-- no JoinKinds A_Setter A_Fold -- END GENERATED CONTENT
src/Optics/Label.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE AllowAmbiguousTypes #-}-{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeInType #-}@@ -65,16 +64,20 @@ -- >>> :set -XDuplicateRecordFields -- >>> :set -XOverloadedLabels -- >>> import GHC.Generics (Generic)+-- -- >>> :{+-- data Pet+-- = Cat { name :: String, age :: Int, lazy :: Bool }+-- | Fish { name :: String, age :: Int, lazy :: Bool }+-- deriving (Show, Generic)+-- :}+--+-- >>> :{ -- data Human = Human -- { name :: String -- , age :: Integer -- , pets :: [Pet] -- } deriving (Show, Generic)--- data Pet--- = Cat { name :: String, age :: Int, lazy :: Bool }--- | Fish { name :: String, age :: Int, lazy :: Bool }--- deriving (Show, Generic) -- :} -- -- /Note:/ Generic deriving of optics works well on a moderate scale, but for@@ -148,23 +151,20 @@ -- alleviate these issues. We're quite close to having a reasonable solution -- with the following trifecta: ----- - @<https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#extension-DuplicateRecordFields DuplicateRecordFields>@ - introduced in GHC 8.0.1, addresses (1)+-- - @<https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/duplicate_record_fields.html DuplicateRecordFields>@ - introduced in GHC 8.0.1, addresses (1) ----- - @<https://github.com/ghc-proposals/ghc-proposals/pull/160 NoFieldSelectors>@ - accepted GHC proposal, addresses (2)+-- - @<https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/field_selectors.html NoFieldSelectors>@ and @<https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/overloaded_record_dot.html OverloadedRecordDot>@ - introduced in GHC 9.2.1, addresses (2) ----- - @<https://github.com/ghc-proposals/ghc-proposals/pull/282 RecordDotSyntax>@ - accepted GHC proposal, addresses (3)+-- - @<https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/overloaded_record_update.html OverloadedRecordUpdate>@ - restricted version introduced in GHC 9.2.1, addresses (3) ----- It needs to be noted however that both @NoFieldSelectors@ and--- @RecordDotSyntax@ are not yet implemented, with the latter depending on--- adding @setField@ to @HasField@--- (<https://gitlab.haskell.org/ghc/ghc/issues/16232 ghc/16232>), not yet--- merged.+-- It needs to be noted however that @OverloadedRecordUpdate@ is not yet usable+-- out of the box as it requires the user to enable @RebindableSyntax@ and+-- provide their own @HasField@ class. -- -- Is there no hope then for people who would like to work with records in a--- reasonable way without waiting for these extensions? Not necessarily, as by--- following a couple of simple patterns we can get pretty much the same (and--- more) features with labels as optics, just with a slightly more verbose--- syntax.+-- reasonable way without waiting? Not necessarily, as by following a couple of+-- simple patterns we can get pretty much the same (and more) features with+-- labels as optics, just with a slightly more verbose syntax. -- $solution --@@ -174,7 +174,7 @@ -- name and @#field@ to be an overloaded label that becomes an optic refering to -- this field in the appropriate context. With this approach we get working -- autocompletion and jump-to-definition in editors supporting @ctags@/@etags@--- in combination with @<https://hackage.haskell.org/package/hasktags hasktags>@,+-- in combination with @<https://hackage.haskell.org/package/ghc-tags ghc-tags>@, -- both of which (especially the latter) are very important for developer's -- productivity in real-world code bases. --@@ -211,9 +211,11 @@ -- makeFieldLabelsNoPrefix ''Movie -- @ ----- For production software the recommended approach is generation with Template--- Haskell as it scales well in terms of compilation time and provides the best--- performance in general.+-- Generally speaking, both techniques trade blows in terms of compile time and+-- run time resources. Generic optics are a bit slower to compile without+-- optimizations than Template Haskell generated ones and their updating part+-- might be slightly slower for larger data types with GHC < 9.2. On the other+-- hand, generic optics are much more developer friendly. -- -- /Note:/ there exists a similar approach that involves prefixing field names -- (either with the underscore or name of the data type) and generation of@@ -227,8 +229,9 @@ -- -- Prefixless fields (especially ones with common names such as @id@ or @name@) -- leak into global namespace as accessor functions and can generate a lot of--- name clashes. Before @NoFieldSelectors@ is available, this can be alleviated by--- splitting modules defining types into two, namely:+-- name clashes. If you can't use GHC >= 9.2 and take advantage of the+-- @NoFieldSelectors@ language extension, this can be alleviated by splitting+-- modules defining types into two, namely: -- -- (1) A private one that exports full type definitions, i.e. with their fields -- and constructors.
src/Optics/Optic.hs view
@@ -13,7 +13,7 @@ -- * the subtyping relation 'Is' with an accompanying 'castOptic' function to -- convert an optic kind; ----- * the 'Join' operation used to find the optic kind resulting from a+-- * the 'JoinKinds' class used to find the optic kind resulting from a -- composition. -- -- Each optic kind is identified by a "tag type" (such as 'A_Lens'), which is an@@ -36,7 +36,7 @@ -- * Composition -- | The usual operator for composing optics is ('%'), which allows different -- optic kinds to be composed, automatically calculating the resulting optic- -- kind using 'Join'.+ -- kind using 'JoinKinds'. -- -- The ('.') function composition operator cannot be used to compose optics, -- because /optics are not functions/. The ('Control.Category..') operator
src/Optics/Prism.hs view
@@ -15,18 +15,20 @@ , prism -- * Elimination- -- | A 'Prism' is in particular an 'Optics.AffineFold.AffineFold', a+ -- | A 'Prism' is in particular an 'Optics.AffineFold.AffineFold',+ -- an 'Optics.AffineTraversal.AffineTraversal', a -- 'Optics.Review.Review' and a 'Optics.Setter.Setter', therefore you can -- specialise types to obtain: -- -- @- -- 'Optics.AffineFold.preview' :: 'Prism'' s a -> s -> Maybe a- -- 'Optics.Review.review' :: 'Prism'' s a -> a -> s+ -- 'Optics.AffineFold.preview' :: 'Prism'' s a -> s -> Maybe a+ -- 'Optics.Review.review' :: 'Prism'' s a -> a -> s -- @ -- -- @- -- 'Optics.Setter.over' :: 'Prism' s t a b -> (a -> b) -> s -> t- -- 'Optics.Setter.set' :: 'Prism' s t a b -> b -> s -> t+ -- 'Optics.Setter.over' :: 'Prism' s t a b -> (a -> b) -> s -> t+ -- 'Optics.Setter.set' :: 'Prism' s t a b -> b -> s -> t+ -- 'Optics.AffineTraversal.matching' :: 'Prism' s t a b -> s -> Either t a -- @ -- -- If you want to 'Optics.AffineFold.preview' a type-modifying 'Prism' that is
src/Optics/Setter.hs view
@@ -54,6 +54,8 @@ , set , set' , over'+ , rewriteOf+ , transformOf -- * Subtyping , A_Setter@@ -152,6 +154,35 @@ mapped :: Functor f => Setter (f a) (f b) a b mapped = Optic mapped__ {-# INLINE mapped #-}++-- | Rewrite by applying a rule everywhere you can. Ensures that the rule cannot+-- be applied anywhere in the result:+--+-- @+-- propRewriteOf l r x = 'all' ('Data.Just.isNothing' '.' r) ('universeOf' l ('rewriteOf' l r x))+-- @+--+-- Usually 'transformOf' is more appropriate, but 'rewriteOf' can give better+-- compositionality. Given two single transformations @f@ and @g@, you can+-- construct @\\a -> f a '<|>' g a@ which performs both rewrites until a fixed+-- point.+--+-- @since 0.4.1+rewriteOf :: Is k A_Setter => Optic k is a b a b -> (b -> Maybe a) -> a -> b+rewriteOf o f = go+ where+ go = transformOf o $ \x -> maybe x go (f x)+{-# INLINE rewriteOf #-}++-- | Transform every element by recursively applying a given 'Setter' in a+-- bottom-up manner.+--+-- @since 0.4.1+transformOf :: Is k A_Setter => Optic k is a b a b -> (b -> b) -> a -> b+transformOf o f = go+ where+ go = f . over o go+{-# INLINE transformOf #-} -- $setup -- >>> import Optics.Core
src/Optics/Traversal.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE AllowAmbiguousTypes #-}-{-# LANGUAGE EmptyCase #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE UndecidableInstances #-} -- |@@ -60,6 +59,8 @@ , mapAccumLOf , scanr1Of , scanl1Of+ , rewriteMOf+ , transformMOf , failover , failover' @@ -246,6 +247,34 @@ step (Just s) a = let r = f a s in (r, Just r) in fst . mapAccumROf o step Nothing {-# INLINE scanr1Of #-}++-- | Rewrite by applying a monadic rule everywhere you recursing with a+-- user-specified 'Traversal'.+--+-- Ensures that the rule cannot be applied anywhere in the result.+--+-- @since 0.4.1+rewriteMOf+ :: (Is k A_Traversal, Monad m)+ => Optic k is a b a b+ -> (b -> m (Maybe a)) -> a -> m b+rewriteMOf l f = go+ where+ go = transformMOf l (\x -> f x >>= maybe (return x) go)+{-# INLINE rewriteMOf #-}++-- | Transform every element in a tree using a user supplied 'Traversal' in a+-- bottom-up manner with a monadic effect.+--+-- @since 0.4.1+transformMOf+ :: (Is k A_Traversal, Monad m)+ => Optic k is a b a b+ -> (b -> m b) -> a -> m b+transformMOf l f = go+ where+ go t = traverseOf l go t >>= f+{-# INLINE transformMOf #-} -- | Try to map a function over this 'Traversal', returning Nothing if the -- traversal has no targets.