@@ -70,6 +70,16 @@ export const fromSubscriptionRef = <A>(
|
||||
modify: ref.modifyEffect.bind(ref), // TODO
|
||||
})
|
||||
|
||||
export const unwrap = <A, ER, EW, RR, RW, E1, R1>(
|
||||
effect: Effect.Effect<Lens<A, ER, EW, RR, RW>, E1, R1>
|
||||
): Lens<A, ER | E1, EW | E1, RR | R1, RW | R1> => make({
|
||||
get: Effect.flatMap(effect, l => l.get),
|
||||
changes: Stream.unwrap(Effect.map(effect, l => l.changes)),
|
||||
modify: <B, E2 = never, R2 = never>(
|
||||
f: (a: A) => Effect.Effect<readonly [B, A], E2, R2>
|
||||
) => Effect.flatMap(effect, l => l.modify(f)),
|
||||
})
|
||||
|
||||
|
||||
export const map = <A, ER, EW, RR, RW, B>(
|
||||
self: Lens<A, ER, EW, RR, RW>,
|
||||
@@ -106,6 +116,7 @@ export const mapEffect = <A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet
|
||||
)),
|
||||
})
|
||||
|
||||
|
||||
export const get = <A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>): Effect.Effect<A, ER, RR> => self.get
|
||||
|
||||
export const set: {
|
||||
@@ -183,16 +194,6 @@ export const updateAndGetEffect: {
|
||||
)),
|
||||
)
|
||||
|
||||
export const unwrap = <A, ER, EW, RR, RW, E1, R1>(
|
||||
effect: Effect.Effect<Lens<A, ER, EW, RR, RW>, E1, R1>
|
||||
): Lens<A, ER | E1, EW | E1, RR | R1, RW | R1> => make({
|
||||
get: Effect.flatMap(effect, l => l.get),
|
||||
changes: Stream.unwrap(Effect.map(effect, l => l.changes)),
|
||||
modify: <B, E2 = never, R2 = never>(
|
||||
f: (a: A) => Effect.Effect<readonly [B, A], E2, R2>
|
||||
) => Effect.flatMap(effect, l => l.modify(f)),
|
||||
})
|
||||
|
||||
|
||||
Effect.gen(function*() {
|
||||
const myChunkRef = yield* SubscriptionRef.make(Chunk.make(12, 38, 69) as Chunk.Chunk<number>)
|
||||
|
||||
Reference in New Issue
Block a user