yall: Lenses with a southern twang
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
andw
), and look likea -> 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
powerfullya rich set of category-level class instances (for now from "categories") for
Lens
andIso
. 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 Isocreate 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
- yall-0.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
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 | 2941 total (12 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] |