Isos & Lens for Data.Diverse.Many and Prisms for Data.Diverse.Which

Version on this page:
LTS Haskell 10.3:
Stackage Nightly 2018-01-21:
Latest on Hackage:

See all snapshots data-diverse-lens appears in

BSD3 licensed by Louis Pan
Maintained by

Module documentation for

Hackage Build Status

Provides "Iso"s & 'Len's for "Data.Diverse.Many" and 'Prism's for "Data.Diverse.Which".

Refer to ManySpec.hs and WhichSpec.hs for example usages.


  • - Removed profunctor variable @w@ from the constraint synonyms for Projected/Injected.

  • - Forgot to expose constraint synonyms for Projected/Injected.

  • - Breaking change: Removed HasProject and AsInject typeclasses and changed them back to functions. - Added 'MatchingFacet' typeclasses for polymorphic 'matching' of prisms. - Added constraint synonyms for Project/Inject/Projected/Injected.

  • - Fixed missing exports of the new lens classes.

  • - Removed overlapping instances of Data.Generics lens - Using typeclass instead of plain functions so that lens can be used for other data types - Added default implementations for some of these typeclasses using Data.Generic typeclasses. - Breaking change: the xxx' version of functions are now consistently the simpler or non-polymorphic version - This is more consistent with 'Control.Lens' as well. - This means the following are swapped: - item, item' - itemL, itemL' - itemTag, itemTag' - itemN, itemN' - project, project' - projectL, projectL' - projectN, projectN'

  • - Added itemTag and facetTag that also tag/untags the field. - Added overlapping instances of Data.Generics lens

  • - Added faceted, injected, itemized, projected, which is analogous to Profunctor Choice and Strong but using 'Which' and 'Many' - Added +||+ (analogous to +++ and |||), >||>; and && (analogous to *** and &&&), and >&&>.

  • - min bounds: data-diverse >=1.2.1 - Rerranged type variable for xxxL and xxxN functions so that the @x@ inferrred from label @l@ or index @n@ is after @proxy@. - This affects item[L|N], item[L|N]', replace[L|N]', facet[L|N] - Same change was made in data-diverse-

  • - included data-diverse 1.0 in the upper bounds

  • - Changed type variable ordering of 'itemL' and 'itemL', so it's consistently 'x', 'y', then 'xs'

  • - Changed type variable ordering of 'facetL' and 'facetN', so it's consistently 'x' then 'xs'

  • pre - Initial version represented as (Int, Data.Map Int Any)

comments powered byDisqus