@@ -294,11 +294,16 @@ export const map: {
|
|||||||
self: Lens<A, ER, EW, RR, RW>,
|
self: Lens<A, ER, EW, RR, RW>,
|
||||||
get: (a: NoInfer<A>) => B,
|
get: (a: NoInfer<A>) => B,
|
||||||
update: (a: NoInfer<A>, b: B) => NoInfer<A>,
|
update: (a: NoInfer<A>, b: B) => NoInfer<A>,
|
||||||
): Lens<B, ER, EW, RR, RW> => mapEffect(
|
): Lens<B, ER, EW, RR, RW> => derive(self, {
|
||||||
self,
|
resolve: parent => Effect.map(
|
||||||
a => Effect.succeed(get(a)),
|
parent,
|
||||||
(a, b) => Effect.succeed(update(a, b)),
|
frame => ({
|
||||||
))
|
value: get(frame.value),
|
||||||
|
commit: next => frame.commit(Effect.map(next, b => update(frame.value, b))),
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
transformStream: Stream.map(get),
|
||||||
|
}))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Derives a new `Lens` by applying effectful getters and setters over the focused value.
|
* Derives a new `Lens` by applying effectful getters and setters over the focused value.
|
||||||
@@ -307,16 +312,16 @@ export const mapEffect: {
|
|||||||
<A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(
|
<A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(
|
||||||
self: Lens<A, ER, EW, RR, RW>,
|
self: Lens<A, ER, EW, RR, RW>,
|
||||||
get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>,
|
get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>,
|
||||||
set: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>,
|
update: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>,
|
||||||
): Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet>
|
): Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet>
|
||||||
<A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(
|
<A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(
|
||||||
get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>,
|
get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>,
|
||||||
set: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>,
|
update: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>,
|
||||||
): (self: Lens<A, ER, EW, RR, RW>) => Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet>
|
): (self: Lens<A, ER, EW, RR, RW>) => Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet>
|
||||||
} = Function.dual(3, <A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(
|
} = Function.dual(3, <A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(
|
||||||
self: Lens<A, ER, EW, RR, RW>,
|
self: Lens<A, ER, EW, RR, RW>,
|
||||||
get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>,
|
get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>,
|
||||||
set: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>,
|
update: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>,
|
||||||
): Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet> => derive(self, {
|
): Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet> => derive(self, {
|
||||||
resolve: parent => Effect.flatMap(
|
resolve: parent => Effect.flatMap(
|
||||||
parent,
|
parent,
|
||||||
@@ -324,7 +329,7 @@ export const mapEffect: {
|
|||||||
get(frame.value),
|
get(frame.value),
|
||||||
value => ({
|
value => ({
|
||||||
value,
|
value,
|
||||||
commit: next => frame.commit(Effect.flatMap(next, b => set(frame.value, b))),
|
commit: next => frame.commit(Effect.flatMap(next, b => update(frame.value, b))),
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user