diff --git a/packages/effect-fc/src/Lens.ts b/packages/effect-fc/src/Lens.ts index 6c7da97..b0a1dcd 100644 --- a/packages/effect-fc/src/Lens.ts +++ b/packages/effect-fc/src/Lens.ts @@ -79,7 +79,9 @@ export const map = ( (b: B): (parent: A) => A }, ): Lens => { - const setF = + const setF = (parent: A, b: B) => set.length >= 2 + ? (set as (parent: A, b: B) => A)(parent, b) + : (set as (b: B) => (parent: A) => A)(b)(parent) return make({ get: Effect.map(self.get, get), @@ -87,7 +89,7 @@ export const map = ( 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)) + Effect.flatMap(f(get(a)), ([c, next]) => Effect.succeed([c, setF(a, next)] as const)) ), }) }