diff --git a/packages/effect-fc/src/Lens.ts b/packages/effect-fc/src/Lens.ts
index 0653ad2..45779eb 100644
--- a/packages/effect-fc/src/Lens.ts
+++ b/packages/effect-fc/src/Lens.ts
@@ -1,4 +1,4 @@
-import { Array, Chunk, Effect, flow, Option, Pipeable, Predicate, Readable, Stream, Subscribable, SubscriptionRef } from "effect"
+import { Chunk, Effect, Pipeable, Predicate, Readable, Stream, Subscribable, SubscriptionRef } from "effect"
export const LensTypeId: unique symbol = Symbol.for("@effect-fc/Lens/Lens")
@@ -74,32 +74,21 @@ export const fromSubscriptionRef = (
export const map = (
self: Lens,
get: (a: NoInfer) => B,
- set: {
- (b: B): (parent: NoInfer) => NoInfer
- (parent: NoInfer, b: B): NoInfer
- },
+ set: (a: NoInfer, b: B) => NoInfer,
): Lens => make({
get get() { return Effect.map(self.get, get) },
get changes() { return Stream.map(self.changes, get) },
modify: (
f: (b: B) => Effect.Effect
) => self.modify(a =>
- Effect.flatMap(f(get(a)), ([c, next]) => Effect.succeed([
- c,
- set.length >= 2
- ? (set as (parent: A, b: B) => A)(a, next)
- : (set as (b: B) => (parent: A) => A)(next)(a),
- ]))
+ Effect.flatMap(f(get(a)), ([c, next]) => Effect.succeed([c, set(a, next)]))
),
})
export const mapEffect = (
self: Lens,
get: (a: NoInfer) => Effect.Effect,
- set: {
- (b: B): (parent: NoInfer) => Effect.Effect, ESet, RSet>
- (parent: NoInfer, b: B): Effect.Effect, ESet, RSet>
- },
+ set: (a: NoInfer, b: B) => Effect.Effect, ESet, RSet>,
): Lens => make({
get get() { return Effect.flatMap(self.get, get) },
get changes() { return Stream.mapEffect(self.changes, get) },
@@ -110,9 +99,7 @@ export const mapEffect = Effect.flatMap(
f(b),
([c, bNext]) => Effect.flatMap(
- set.length >= 2
- ? (set as (parent: A, b: B) => Effect.Effect)(a, bNext)
- : (set as (b: B) => (parent: A) => Effect.Effect)(bNext)(a),
+ set(a, bNext),
nextA => Effect.succeed([c, nextA] as const),
),
)
@@ -131,13 +118,12 @@ export const unwrap = (
Effect.gen(function*() {
- const myArrayRef = yield* SubscriptionRef.make([12, 38, 69])
- const myArrayLens = fromSubscriptionRef(myArrayRef)
- const arrayValueLens = map(myArrayLens, flow(Array.get(1), Option.getOrThrow), (a, b) => Array.replace(a, 1, b))
-
- const myChunkRef = yield* SubscriptionRef.make(Chunk.make([12, 38, 69]))
+ const myChunkRef = yield* SubscriptionRef.make(Chunk.make(12, 38, 69) as Chunk.Chunk)
const myChunkLens = fromSubscriptionRef(myChunkRef)
const chunkValueLens = mapEffect(myChunkLens, Chunk.get(1), (a, b) => Effect.succeed(Chunk.replace(a, 1, b)))
+
+ console.log(yield* myChunkRef.get)
+ console.log(yield* chunkValueLens.get)
}).pipe(
Effect.runSync
)