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))),
}),
),
),