diff --git a/kernel/shared/src/main/scala/cats/effect/kernel/Ref.scala b/kernel/shared/src/main/scala/cats/effect/kernel/Ref.scala index 2b820b5f9c..8f2f9211f1 100644 --- a/kernel/shared/src/main/scala/cats/effect/kernel/Ref.scala +++ b/kernel/shared/src/main/scala/cats/effect/kernel/Ref.scala @@ -104,6 +104,11 @@ abstract class Ref[F[_], A] extends RefSource[F, A] with RefSink[F, A] { */ def modify[B](f: A => (A, B)): F[B] + /** + * Like `modify` but the evaluation of the return value is wrapped in the effect type `F`. + */ + def flatModify[B](f: A => (A, F[B]))(implicit F: FlatMap[F]): F[B] = F.flatten(modify(f)) + /** * Update the value of this ref with a state computation. *