Hyperlinkv0.8.0-beta.28

SynchronizedRef

SynchronizedRef.updateSomeAndGetconsteffect/SynchronizedRef.ts:627
<A>(pf: (a: A) => Option.Option<A>): (
  self: SynchronizedRef<A>
) => Effect.Effect<A>
<A>(
  self: SynchronizedRef<A>,
  pf: (a: A) => Option.Option<A>
): Effect.Effect<A>

Applies a partial update and returns the resulting current value. Option.some stores and returns the new value; Option.none returns the unchanged value.

When to use

Use to apply a pure conditional SynchronizedRef update and return the resulting current value.

export const updateSomeAndGet: {
  <A>(pf: (a: A) => Option.Option<A>): (self: SynchronizedRef<A>) => Effect.Effect<A>
  <A>(self: SynchronizedRef<A>, pf: (a: A) => Option.Option<A>): Effect.Effect<A>
} = dual(
  2,
  <A>(self: SynchronizedRef<A>, pf: (a: A) => Option.Option<A>): Effect.Effect<A> =>
    self.semaphore.withPermit(Ref.updateSomeAndGet(self.backing, pf))
)