monocle-ts-esm
Version:
A porting of scala monocle library to TypeScript
20 lines (19 loc) • 473 B
JavaScript
/**
* @since 1.2.0
*/
import { At, Lens } from '..';
import * as S from 'fp-ts-esm/Set';
/**
* @category constructor
* @since 1.2.0
*/
export function atSet(E) {
const elemE = S.elem(E);
const insertE = S.insert(E);
const removeE = S.remove(E);
return new At((at) => {
const insertEAt = insertE(at);
const removeEAt = removeE(at);
return new Lens((s) => elemE(at, s), (a) => (s) => (a ? insertEAt(s) : removeEAt(s)));
});
}