yall: Lenses with a southern twang

[ bsd3, data, library ] [ Propose Tags ]

Why yet another lens library? First, none of the existing libraries for Lenses were adequate for my needs (specifically for my use of lenses in "pez"). And anyway, why not try to create something novel and better?

Distinguishing features:

  • Lenses are parameterized over two Monads (by convention m and w), and look like a -> m (b -> w a, b). this lets us define lenses for sum types, that perform validation, that do IO (e.g. persist data to disk), etc., etc.

  • a module Data.Yall.Iso that complements Lens powerfully

  • a rich set of category-level class instances (for now from "categories") for Lens and Iso. These along with the pre-defined primitive lenses and combinators give an interface comparable to Arrow

You should import either Data.Yall or Data.Yall.Lens, and optionally Data.Yall.Iso. Data.Yall is a simplified, but mostly-compatible, version of a subset of Data.Yall.Lens.

TODOs:

  • a module providing template haskell deriving of Lenses

CHANGES:

  • remove setEmpty variants only useful on lenses better expressed in Iso

  • create a class for lens operations, supporting...

  • use newtype wrappers for different monadic lifting schemes

  • better ordering for set, allowing let-floating for partial application

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1, 0.2, 0.2.0.1, 0.2.1
Dependencies base (>=4 && <5), categories (<1.0), transformers [details]
License BSD-3-Clause
Author Brandon Simmons
Maintainer brandon.m.simmons@gmail.com
Category Data
Home page http://brandon.si/code/yall/
Source repo head: git clone https://github.com/jberryman/yall.git -b master
Uploaded by BrandonSimmons at 2012-05-24T21:48:10Z
Distributions
Reverse Dependencies 2 direct, 0 indirect [details]
Downloads 2934 total (10 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]