@typed/lenses
Version:
Strongly-typed functional lenses
15 lines • 559 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Lens = void 0;
const lambda_1 = require("@typed/lambda");
const objects_1 = require("@typed/objects");
var Lens;
(function (Lens) {
Lens.create = (get, set) => ({
get,
update: lambda_1.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) => objects_1.set(key, b, a));
})(Lens = exports.Lens || (exports.Lens = {}));
//# sourceMappingURL=Lens.js.map