Skip to content

Commit

Permalink
Return Xor instead of Either in Free.resume
Browse files Browse the repository at this point in the history
This makes it consistent with conventions used elsewhere in Cats.
  • Loading branch information
ceedubs committed Sep 8, 2015
1 parent 672e010 commit 425e634
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion free/src/main/scala/cats/free/Free.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package free

import scala.annotation.tailrec

import cats.data.Xor, Xor.{Left, Right}
import cats.arrow.NaturalTransformation

object Free {
Expand Down Expand Up @@ -70,7 +71,7 @@ sealed abstract class Free[S[_], A] extends Product with Serializable {
* Evaluate a single layer of the free monad.
*/
@tailrec
final def resume(implicit S: Functor[S]): Either[S[Free[S, A]], A] = this match {
final def resume(implicit S: Functor[S]): S[Free[S, A]] Xor A = this match {
case Pure(a) => Right(a)
case Suspend(t) => Left(S.map(t)(Pure(_)))
case Gosub(c, f) =>
Expand Down

0 comments on commit 425e634

Please sign in to comment.