diff options
| author | Amir Saeid <amir@glgdgt.com> | 2026-02-14 18:10:39 +0000 |
|---|---|---|
| committer | Amir Saeid <amir@glgdgt.com> | 2026-02-14 18:10:39 +0000 |
| commit | 011b2d67bac21cd625a82abdad5cecaf0d11bd52 (patch) | |
| tree | adc4e1d531306e4308299a19c5e5aa2eee3ad2b3 /core/src/main | |
| parent | e14a5a6b2251f4945c3a9ccbeb4b1eaa634c714f (diff) | |
Remove StackSafeMonad claim
Diffstat (limited to 'core/src/main')
| -rw-r--r-- | core/src/main/scala/com/codiff/fairstream/Fair.scala | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/core/src/main/scala/com/codiff/fairstream/Fair.scala b/core/src/main/scala/com/codiff/fairstream/Fair.scala index 72a9ebe..a665c72 100644 --- a/core/src/main/scala/com/codiff/fairstream/Fair.scala +++ b/core/src/main/scala/com/codiff/fairstream/Fair.scala @@ -1,6 +1,6 @@ package com.codiff.fairstream -import cats.{Alternative, Monad, StackSafeMonad} +import cats.{Alternative, Monad} sealed trait Fair[+A] @@ -68,9 +68,8 @@ object Fair { } } - implicit val fairMonad - : Monad[Fair] with Alternative[Fair] with StackSafeMonad[Fair] = - new Monad[Fair] with Alternative[Fair] with StackSafeMonad[Fair] { + implicit val fairMonad: Monad[Fair] with Alternative[Fair] = + new Monad[Fair] with Alternative[Fair] { def empty[A]: Fair[A] = Fair.empty def pure[A](a: A): Fair[A] = Fair.unit(a) @@ -84,6 +83,12 @@ object Fair { Incomplete(flatMap(i.step)(f)) } + def tailRecM[A, B](a: A)(f: A => Fair[Either[A, B]]): Fair[B] = + flatMap(f(a)) { + case Right(b) => pure(b) + case Left(nextA) => Incomplete(tailRecM(nextA)(f)) + } + def combineK[A](x: Fair[A], y: Fair[A]): Fair[A] = mplus(x, y) } |
