From 2aa4e4eb97b44966e4afa91a3e9006adf3bd08bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 28 May 2026 02:14:52 +0200 Subject: [PATCH] Fix --- packages/effect-lens/src/Lens.ts | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/effect-lens/src/Lens.ts b/packages/effect-lens/src/Lens.ts index 2f8ac7f..9355e9b 100644 --- a/packages/effect-lens/src/Lens.ts +++ b/packages/effect-lens/src/Lens.ts @@ -294,11 +294,16 @@ export const map: { self: Lens, get: (a: NoInfer) => B, update: (a: NoInfer, b: B) => NoInfer, -): Lens => mapEffect( - self, - a => Effect.succeed(get(a)), - (a, b) => Effect.succeed(update(a, b)), -)) +): Lens => 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: { ( self: Lens, get: (a: NoInfer) => Effect.Effect, - set: (a: NoInfer, b: B) => Effect.Effect, ESet, RSet>, + update: (a: NoInfer, b: B) => Effect.Effect, ESet, RSet>, ): Lens ( get: (a: NoInfer) => Effect.Effect, - set: (a: NoInfer, b: B) => Effect.Effect, ESet, RSet>, + update: (a: NoInfer, b: B) => Effect.Effect, ESet, RSet>, ): (self: Lens) => Lens } = Function.dual(3, ( self: Lens, get: (a: NoInfer) => Effect.Effect, - set: (a: NoInfer, b: B) => Effect.Effect, ESet, RSet>, + update: (a: NoInfer, b: B) => Effect.Effect, ESet, RSet>, ): Lens => 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))), }), ), ),