focus

A general abstraction for manipulating elements of container data structures

https://github.com/nikita-volkov/focus

Version on this page:1.0.3
LTS Haskell 22.37:1.0.3.2
Stackage Nightly 2024-10-11:1.0.3.2
Latest on Hackage:1.0.3.2

See all snapshots focus appears in

MIT licensed and maintained by Nikita Volkov
This version can be pinned in stack with:focus-1.0.3@sha256:3d3912de7412272a76f76fa16644ac3550dbcc7fb2d504fa1d80a209dd18114f,2646

Module documentation for 1.0.3

An API for construction of free-form strategies of access and manipulation of elements of arbitrary data structures. It allows to implement efficient composite patterns, e.g., a simultaneous update and lookup of an element, and even more complex things.

Strategies are meant to be interpreted by the host data structure libraries. Thus they allow to implement all access and modification patterns of a data structure with just a single function, which interprets strategies.

This library provides pure and monadic interfaces, so it supports both immutable and mutable data structures.