From e89babe223b1a1e3087c28e7225ecd740c673a63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 23 Mar 2026 20:09:59 +0100 Subject: [PATCH] Work --- packages/effect-fc/src/Lens.ts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/effect-fc/src/Lens.ts b/packages/effect-fc/src/Lens.ts index 18d10b3..6c7da97 100644 --- a/packages/effect-fc/src/Lens.ts +++ b/packages/effect-fc/src/Lens.ts @@ -74,21 +74,21 @@ export const fromSubscriptionRef = ( export const map = ( self: Lens, get: (a: A) => B, - set: (b: B, parent: A) => A, + set: { + (parent: A, b: B): A + (b: B): (parent: A) => A + }, ): Lens => { - const getEffect = Effect.map(self.get, get) - const changes = Stream.map(self.changes, get) - const modify = ( - h: (b: B) => Effect.Effect - ) => self.modify((a: A) => { - const b = get(a) - return Effect.flatMap(h(b), ([c, bNext]) => Effect.succeed([c, set(bNext, a)] as const)) - }) + const setF = return make({ - get: getEffect, - changes, - modify, + get: Effect.map(self.get, get), + changes: Stream.map(self.changes, get), + modify: ( + f: (b: B) => Effect.Effect + ) => 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 = 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({ - get, - changes, + get: Effect.flatMap(self.get, getF), + changes: Stream.mapEffect(self.changes, getF), modify, }) }