@typed/lenses
Version:
Strongly-typed functional lenses
12 lines • 413 B
JavaScript
import { curry } from '@typed/lambda';
import { set } from '@typed/objects';
export var Lens;
(function (Lens) {
Lens.create = (get, set) => ({
get,
update: curry((f, a) => set(f(get(a)), a)),
});
Lens.id = () => Lens.create((a) => a, (_, a) => a);
Lens.prop = (key) => Lens.create((a) => a[key], (b, a) => set(key, b, a));
})(Lens || (Lens = {}));
//# sourceMappingURL=Lens.js.map