Skip to content

Commit a5073b9

Browse files
committed
Add flatTap
1 parent cb33801 commit a5073b9

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

core/src/main/scala/sttp/monad/MonadError.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ trait MonadError[F[_]] {
3434
def suspend[T](t: => F[T]): F[T] = flatten(eval(t))
3535
def flatten[T](ffa: F[F[T]]): F[T] = flatMap[F[T], T](ffa)(identity)
3636

37+
def flatTap[T, U](fa: F[T])(f: T => F[U]): F[T] = flatMap(fa)(t => map(f(t))(_ => t))
38+
3739
def fromTry[T](t: Try[T]): F[T] =
3840
t match {
3941
case Success(v) => unit(v)
@@ -55,6 +57,7 @@ object syntax {
5557
def flatMap[B](f: A => F[B])(implicit ME: MonadError[F]): F[B] = ME.flatMap(r)(f)
5658
def handleError[T](h: PartialFunction[Throwable, F[A]])(implicit ME: MonadError[F]): F[A] = ME.handleError(r)(h)
5759
def ensure(e: => F[Unit])(implicit ME: MonadError[F]): F[A] = ME.ensure(r, e)
60+
def flatTap[B](f: A => F[B])(implicit ME: MonadError[F]): F[A] = ME.flatTap(r)(f)
5861
}
5962

6063
implicit final class MonadErrorValueOps[F[_], A](private val v: A) extends AnyVal {

0 commit comments

Comments
 (0)