0.2.5 #43
@@ -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: {
|
export const mapArrayAt: {
|
||||||
<A, ER, EW, RR, RW>(
|
<A, ER, EW, RR, RW>(
|
||||||
self: Lens<readonly A[], ER, EW, RR, RW>,
|
self: Lens<readonly A[], ER, EW, RR, RW>,
|
||||||
@@ -275,14 +292,15 @@ Effect.gen(function*() {
|
|||||||
values: [13, 69, 1488]
|
values: [13, 69, 1488]
|
||||||
})
|
})
|
||||||
|
|
||||||
const myValueLens = myChunkRef.pipe(
|
const myValueLens = ref.pipe(
|
||||||
fromSubscriptionRef,
|
fromSubscriptionRef,
|
||||||
mapChunkAt(1),
|
mapStructAt("values"),
|
||||||
|
mapArrayAt(1),
|
||||||
)
|
)
|
||||||
|
|
||||||
console.log(yield* myChunkRef.get, yield* chunkValueLens.get)
|
console.log(yield* ref.get, yield* myValueLens.get)
|
||||||
yield* set(chunkValueLens, 22)
|
yield* set(myValueLens, 22)
|
||||||
console.log(yield* myChunkRef.get, yield* chunkValueLens.get)
|
console.log(yield* ref.get, yield* myValueLens.get)
|
||||||
}).pipe(
|
}).pipe(
|
||||||
Effect.runSync
|
Effect.runSync
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user