@@ -294,11 +294,16 @@ export const map: {
|
||||
self: Lens<A, ER, EW, RR, RW>,
|
||||
get: (a: NoInfer<A>) => B,
|
||||
update: (a: NoInfer<A>, b: B) => NoInfer<A>,
|
||||
): Lens<B, ER, EW, RR, RW> => mapEffect(
|
||||
self,
|
||||
a => Effect.succeed(get(a)),
|
||||
(a, b) => Effect.succeed(update(a, b)),
|
||||
))
|
||||
): Lens<B, ER, EW, RR, RW> => derive(self, {
|
||||
resolve: parent => Effect.map(
|
||||
parent,
|
||||
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.
|
||||
@@ -307,16 +312,16 @@ export const mapEffect: {
|
||||
<A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(
|
||||
self: Lens<A, ER, EW, RR, RW>,
|
||||
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>
|
||||
<A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(
|
||||
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>
|
||||
} = Function.dual(3, <A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(
|
||||
self: Lens<A, ER, EW, RR, RW>,
|
||||
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, {
|
||||
resolve: parent => Effect.flatMap(
|
||||
parent,
|
||||
@@ -324,7 +329,7 @@ export const mapEffect: {
|
||||
get(frame.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