ramda-lens-map
v1.0.1
Published
A lens for ramda which lets you focus on a key in a native Map.
Readme
ramda-lens-map
A lens for ramda which lets you focus on a key in a Map.
Installation
npm i ramda-lens-mapUsage
You can use ramda-lens-map like any other lens from ramda. For instance, to
set the value in a Map:
import { set } from 'ramda';
import lensMap from 'ramda-lens-map';
const myMap = new Map();
const myNewMap = set(lensMap('foo'), 'bar', myMap);myNewMap now has a key of 'foo' with a value of 'bar'. The original map is
completely unaffected.
Advanced Usage
ramda uses Laarhoven Lenses which are composable. Consider the following example:
import {
compose,
construct,
lensIndex,
set,
times,
} from 'ramda';
import lensMap from 'ramda-lens-map';
const myMaps = times(construct(Map), 3); // Construct an array of three Maps
const myNewMaps = set(compose(lensIndex(1), lensMap('foo')), 'bar', myMaps);myNewMaps is a new array where the first and third Map objects are
unaffected and referentially equal to the first and third Map objects in
myMaps. The second Map object in myNewMaps is a brand new Map with
a key 'foo' set to a value 'bar'. See src/lens-map.test.ts for a
working example of lens composition.
Caveats
- This package only provides a lens. Functions such as
evolveare unaffected. - There is no analog for
dissoc. As far as I'm aware there is no way to drop the value focused by a lens with any ramda functions.
License
MIT
