0.2.5 #43
@@ -74,21 +74,21 @@ export const fromSubscriptionRef = <A>(
|
|||||||
export const map = <A, ER, RR, EW, RW, B>(
|
export const map = <A, ER, RR, EW, RW, B>(
|
||||||
self: Lens<A, ER, RR, EW, RW>,
|
self: Lens<A, ER, RR, EW, RW>,
|
||||||
get: (a: A) => B,
|
get: (a: A) => B,
|
||||||
set: (b: B, parent: A) => A,
|
set: {
|
||||||
|
(parent: A, b: B): A
|
||||||
|
(b: B): (parent: A) => A
|
||||||
|
},
|
||||||
): Lens<B, ER, RR, EW, RW> => {
|
): Lens<B, ER, RR, EW, RW> => {
|
||||||
const getEffect = Effect.map(self.get, get)
|
const setF =
|
||||||
const changes = Stream.map(self.changes, get)
|
|
||||||
const modify = <C, E1 = never, R1 = never>(
|
|
||||||
h: (b: B) => Effect.Effect<readonly [C, B], E1, R1>
|
|
||||||
) => self.modify((a: A) => {
|
|
||||||
const b = get(a)
|
|
||||||
return Effect.flatMap(h(b), ([c, bNext]) => Effect.succeed([c, set(bNext, a)] as const))
|
|
||||||
})
|
|
||||||
|
|
||||||
return make({
|
return make({
|
||||||
get: getEffect,
|
get: Effect.map(self.get, get),
|
||||||
changes,
|
changes: Stream.map(self.changes, get),
|
||||||
modify,
|
modify: <C, E1 = never, R1 = never>(
|
||||||
|
f: (b: B) => Effect.Effect<readonly [C, B], E1, R1>
|
||||||
|
) => self.modify((a: A) =>
|
||||||
|
Effect.flatMap(f(get(a)), ([c, next]) => Effect.succeed([c, set(a, next)] as const))
|
||||||
|
),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,8 +104,8 @@ export const mapEffect = <A, ER, RR, EW, RW, B, EGet = never, RGet = never, ESet
|
|||||||
) => self.modify((a: A) => Effect.flatMap(getF(a), b => Effect.flatMap(h(b), ([c, bNext]) => Effect.flatMap(setF(bNext, a), nextA => Effect.succeed([c, nextA] as const)))))
|
) => self.modify((a: A) => Effect.flatMap(getF(a), b => Effect.flatMap(h(b), ([c, bNext]) => Effect.flatMap(setF(bNext, a), nextA => Effect.succeed([c, nextA] as const)))))
|
||||||
|
|
||||||
return make({
|
return make({
|
||||||
get,
|
get: Effect.flatMap(self.get, getF),
|
||||||
changes,
|
changes: Stream.mapEffect(self.changes, getF),
|
||||||
modify,
|
modify,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user