This commit is contained in:
@@ -137,6 +137,23 @@ export const mapEffect: {
|
||||
)),
|
||||
}))
|
||||
|
||||
export const mapStructAt: {
|
||||
<A extends object, K extends keyof A, ER, EW, RR, RW>(
|
||||
self: Lens<A, ER, EW, RR, RW>,
|
||||
key: K,
|
||||
): Lens<A[K], ER, EW, RR, RW>
|
||||
<A extends object, K extends keyof A, ER, EW, RR, RW>(
|
||||
key: K,
|
||||
): (self: Lens<A, ER, EW, RR, RW>) => Lens<A[K], ER, EW, RR, RW>
|
||||
} = Function.dual(2, <A extends object, K extends keyof A, ER, EW, RR, RW>(
|
||||
self: Lens<A, ER, EW, RR, RW>,
|
||||
key: K,
|
||||
): Lens<A[K], ER, EW, RR, RW> => map(
|
||||
self,
|
||||
a => a[key],
|
||||
(a, b) => Object.setPrototypeOf({ ...a, [key]: b }, Object.getPrototypeOf(a)),
|
||||
))
|
||||
|
||||
export const mapArrayAt: {
|
||||
<A, ER, EW, RR, RW>(
|
||||
self: Lens<readonly A[], ER, EW, RR, RW>,
|
||||
@@ -275,14 +292,15 @@ Effect.gen(function*() {
|
||||
values: [13, 69, 1488]
|
||||
})
|
||||
|
||||
const myValueLens = myChunkRef.pipe(
|
||||
const myValueLens = ref.pipe(
|
||||
fromSubscriptionRef,
|
||||
mapChunkAt(1),
|
||||
mapStructAt("values"),
|
||||
mapArrayAt(1),
|
||||
)
|
||||
|
||||
console.log(yield* myChunkRef.get, yield* chunkValueLens.get)
|
||||
yield* set(chunkValueLens, 22)
|
||||
console.log(yield* myChunkRef.get, yield* chunkValueLens.get)
|
||||
console.log(yield* ref.get, yield* myValueLens.get)
|
||||
yield* set(myValueLens, 22)
|
||||
console.log(yield* ref.get, yield* myValueLens.get)
|
||||
}).pipe(
|
||||
Effect.runSync
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user