UNPKG

monocle-ts-esm

Version:

A porting of scala monocle library to TypeScript

20 lines (19 loc) 473 B
/** * @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))); }); }