diff --git a/packages/effect-fc/src/Lens.ts b/packages/effect-fc/src/Lens.ts
index 4f5dde2..a4c653b 100644
--- a/packages/effect-fc/src/Lens.ts
+++ b/packages/effect-fc/src/Lens.ts
@@ -73,26 +73,27 @@ export const fromSubscriptionRef = (
export const map = (
self: Lens,
- get: (a: A) => B,
- set: {
- (b: B): (parent: A) => A
- (parent: A, b: B): A
- },
-): Lens => {
- 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),
- changes: Stream.map(self.changes, get),
- modify: (
- f: (b: B) => Effect.Effect
- ) => self.modify(a =>
- Effect.flatMap(f(get(a)), ([c, next]) => Effect.succeed([c, setF(a, next)] as const))
- ),
- })
-}
+ options: {
+ readonly get: (a: A) => B,
+ readonly set: {
+ (b: B): (parent: A) => A
+ (parent: A, b: B): A
+ },
+ }
+): Lens => make({
+ get: Effect.map(self.get, options.get),
+ changes: Stream.map(self.changes, options.get),
+ modify: (
+ f: (b: B) => Effect.Effect
+ ) => self.modify(a =>
+ Effect.flatMap(f(options.get(a)), ([c, next]) => Effect.succeed([
+ c,
+ options.set.length >= 2
+ ? (options.set as (parent: A, b: B) => A)(a, next)
+ : (options.set as (b: B) => (parent: A) => A)(next)(a),
+ ] as const))
+ ),
+})
export const mapEffect = (
self: Lens,