First class composable record labels for Haskell.
Haskell Shell
Switch branches/tags
Nothing to show
Pull request Compare This branch is 1 commit ahead, 196 commits behind sebastiaanvisser:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bench
src/Data
test
.gitignore
CHANGELOG
LICENCE
README
Setup.lhs
fclabels.cabal

README

This package provides first class labels that can act as bidirectional record
fields. The labels can be derived automatically using Template Haskell which
means you don't have to write any boilerplate yourself. The labels are
implemented as lenses and are fully composable. Labels can be used to get, set
and modify parts of a datatype in a consistent way.

See Data.Label for an introductory explanation.

Internally lenses are not tied to Haskell functions directly, but are
implemented as arrows. Arrows allow the lenses to be run in custom
computational contexts. This approach allows us to make partial lenses that
point to fields of multi-constructor datatypes in an elegant way.

See the Data.Label.Maybe module for the use of partial labels.