diff --git a/packages/effect-lens-next/src/Lens.ts b/packages/effect-lens-next/src/Lens.ts index aa71810..710c496 100644 --- a/packages/effect-lens-next/src/Lens.ts +++ b/packages/effect-lens-next/src/Lens.ts @@ -219,11 +219,13 @@ extends LensImpl { * Note: since `Ref` does not provide any kind of reactivity mechanism, the produced `Lens` will be non-reactive. * This means its `changes` stream will only emit the current value once when evaluated and nothing else. */ -export const fromRef = Effect.fnUntraced(function* ( +export const fromRef = ( ref: Ref.Ref -): Effect.fn.Return, never, never> { - return new RefLensImpl(ref, yield* Semaphore.make(1)) -}) +): Effect.Effect, never, never> => Effect.map( + Semaphore.make(1), + semaphore => new RefLensImpl(ref, semaphore), +) + export class SynchronizedRefLensImpl extends LensImpl { diff --git a/packages/effect-lens/src/Lens.ts b/packages/effect-lens/src/Lens.ts index 55515a7..0f76c0b 100644 --- a/packages/effect-lens/src/Lens.ts +++ b/packages/effect-lens/src/Lens.ts @@ -182,11 +182,12 @@ extends LensImpl { * Note: since `Ref` does not provide any kind of reactivity mechanism, the produced `Lens` will be non-reactive. * This means its `changes` stream will only emit the current value once when evaluated and nothing else. */ -export const fromRef = Effect.fnUntraced(function* ( +export const fromRef = ( ref: Ref.Ref -): Effect.fn.Return, never, never> { - return new RefLensImpl(ref, yield* Effect.makeSemaphore(1)) -}) +): Effect.Effect, never, never> => Effect.map( + Effect.makeSemaphore(1), + semaphore => new RefLensImpl(ref, semaphore), +) export declare namespace SynchronizedRefLensImpl {