profunctor-optics: An optics library compatible with the typeclasses in 'profunctors'.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

This package provides utilities for creating and manipulating profunctor-based optics. Some highlights:

Full complement of isos, prisms, lenses, grates, traversals (affine, regular, and non-empty), folds (affine, regular, and non-empty), views, and setters. Many of these have categorical duals.

Composable indexed and co-indexed variants of all of the above.

Compact & straight-forward implementation. No inscrutable internal modules, lawless or otherwise ancillary typeclasses, or heavy type-level machinery.

Fully interoperable. All that is required to create optics (standard, idexable, or co-indexable) is the profunctors package, which is heavily used and likely to end up in base at some point. Optics compose with (.) from Prelude as is typical. If you want to provide profunctor optics for your own types in your own libraries, you can do so without incurring a dependency on this package. Conversions to & from the Van Laarhoven representations are provided for each optic type.

Well-documented properties and exportable predicates for testing your own optics.

See the Readme file for more information.

Properties

Versions 0.0.0.1, 0.0.0.2, 0.0.0.2, 0.0.0.3, 0.0.0.4, 0.0.0.5, 0.0.1, 0.0.2
Change log ChangeLog.md
Dependencies base (>=4.9 && <5.0), comonad (>=4 && <6), connections (>=0.0.2 && <0.1), containers (>=0.4.0 && <0.7), distributive (>=0.3 && <1), ilist (>=0.3.1.0 && <0.4), mtl (>=2.0.1 && <2.3), newtype-generics (>=0.5.3 && <0.6), profunctor-arrows (>=0.0.0.2 && <0.0.1), profunctors (>=5.2.1 && <6), rings (>=0.0.2 && <0.1), semigroupoids (>=5 && <6), tagged (>=0.4.4 && <1), transformers (>=0.2 && <0.6), unliftio-core (>=0.1.2 && <0.2) [details]
License BSD-3-Clause
Copyright 2019 Chris McKinlay
Author Chris McKinlay
Maintainer Chris McKinlay
Category Data, Lenses, Profunctors
Home page https://github.com/cmk/profunctor-extras
Bug tracker https://github.com/cmk/profunctor-extras/issues
Source repo head: git clone https://github.com/cmk/profunctor-extras
Uploaded by cmk at 2019-12-02T17:45:36Z

Modules

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees