Skip to content

3.4

Closed Nov 22, 2012 100% complete

3.4

  • Renamed (%) to (&) and (^%) to (^&). This avoids the conflict with Data.Ratio, which was our highest priority conflict with a third party library.
  • Switched to a more liberal type for ignored
  • Removed some "isplitting" bad combinators from Control.Lens.IndexedFold.
  • Made indexed, taking, and dropping and elementOf lazier and capable of dealing with infi…

3.4

  • Renamed (%) to (&) and (^%) to (^&). This avoids the conflict with Data.Ratio, which was our highest priority conflict with a third party library.
  • Switched to a more liberal type for ignored
  • Removed some "isplitting" bad combinators from Control.Lens.IndexedFold.
  • Made indexed, taking, and dropping and elementOf lazier and capable of dealing with infinite traversals and infinite folds.
  • Improved Indexing to support infinite traversals and folds.
  • Removed some of the more redundant combinators from Control.Lens.Plated, which already had existing aliases in the rest of the traversal API.
  • Moved partsOf, holesOf, and elementOf into Control.Lens.Traversal.
  • Renamed query to peruse and queries to peruses. These are much less contentious names,
    both contain use in their name for analogy to use and uses and the word is about reading.
  • Simpler simple.
  • Added enum and non to Control.Lens.Iso.
  • Added (^?!) to Control.Lens.Fold for unsafe access to the head of a Fold.
  • Changed _head, _tail, _init and _last to traversals in Data.List.Lens and Data.Sequence.Lens.
  • Eliminated traverseHead, traverseTail, traverseInit and traverseLast.
  • partsOf and unsafePartsOf can now also be applied to a Fold yielding a Getter or to a MonadicFold yielding an Action.

3.3

  • Redefined simple and moved it to Control.Lens.Iso. Instead of using simple l you can now compose l.simple or simple.l providing more nuanced control and a more compositional API.
  • Moved the various foo# combinators used to emit cleaner core into an unexported module, Control.Lens.Unsafe. This removes MagicHash from the public API.
  • Removed the bazaar# and runBazaar# coercions that caused issues on GHC HEAD.
  • Changed the default definition of plate to uniplate from ignored.
  • Added Data.Vector.Lens and instances for Data.Vector.
  • Added support for the split package, which is now part of the Haskell platform.
  • Removed redundant Data.List.traverseList. Use itraversed or traverse instead.
  • Moved (:<->) to Control.Lens.Simple.
  • Fixed a bug in Control.Lens.TH that was causing makeIso not to work.
  • Added lifted to Control.Lens.Setter for mapping over monads.
  • Added beside to Control.Lens.Traversal.
  • Removed the operators from Data.List.Lens, they broke the overall pattern of the rest of the API, and were terrible clutter.
  • Fixed a bug that caused resultAt to give wrong answers most of the time.
  • Changed resultAt to an IndexedLens and moved it to Control.Lens.IndexedLens
  • Changed ignored to an IndexedTraversal and moved it to Control.Lens.IndexedTraversal

3.2

  • Made elementOf lazier and moved it from Control.Lens.Traversal to Control.Lens.Plated.
  • Made holesOf and partsOf lazier to deal with infinite structures.
  • Resolved issue #75. We now generate nicer core for most Setter and Fold operations, and some others.
  • Made lenses for field access like _1, _2, etc. lazier.
  • Added Control.Lens.Loupe, which provides a limited form of Lens that can be read from and written to and which can compose
    with other lenses, but can also be returned in a list or as a monadic result, but cannot be used directly for most combinators
    without cloning it first. It is easier to compose than a ReifiedLens, but slightly slower.
  • Moved (:=>) and (:->) into Control.Lens.Simple, which is not exported by Control.Lens by default to reduce name conflicts with third party libraries.

3.1

  • Simplified the type of filtered, so that it can be composed with other folds rather than be parameterized on one. Included the caveat that the new filtered is still not a legal Traversal, despite seeming to compose like one.
  • Renamed ifiltered to ifiltering, and while it still must take an indexed lens-like as an argument, I included a similar caveat about the result not being a legal IndexedLens when given an IndexedLens. The function was renamed because its signature no longer lined up with the new filtered and the gerundive '-ing' suffix has come to indicate an operator that transformers another lens/traversal/etc. into a new one.
  • Added taking and dropping to Control.Lens.Traversal.

This milestone is closed.

No open issues remain. View closed issues or see open milestones in this repository.