Skip to content

Commit

Permalink
Merge pull request #698 from mikejcurry/remove-optiont-monadcombine
Browse files Browse the repository at this point in the history
Reduce OptionT from MonadCombine to Monad
  • Loading branch information
adelbertc committed Nov 25, 2015
2 parents 4fbe9dd + a22676c commit 6469705
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 8 deletions.
9 changes: 4 additions & 5 deletions core/src/main/scala/cats/data/OptionT.scala
Original file line number Diff line number Diff line change
Expand Up @@ -137,19 +137,18 @@ private[data] sealed trait OptionTInstances1 {
}

private[data] sealed trait OptionTInstances extends OptionTInstances1 {
implicit def optionTMonadCombine[F[_]](implicit F: Monad[F]): MonadCombine[OptionT[F, ?]] =
new MonadCombine[OptionT[F, ?]] {

implicit def optionTMonad[F[_]](implicit F: Monad[F]): Monad[OptionT[F, ?]] =
new Monad[OptionT[F, ?]] {
def pure[A](a: A): OptionT[F, A] = OptionT.pure(a)

def flatMap[A, B](fa: OptionT[F, A])(f: A => OptionT[F, B]): OptionT[F, B] =
fa.flatMap(f)

override def map[A, B](fa: OptionT[F, A])(f: A => B): OptionT[F, B] =
fa.map(f)

override def empty[A]: OptionT[F,A] = OptionT(F.pure(None))
override def combine[A](x: OptionT[F,A], y: OptionT[F,A]): OptionT[F,A] = x orElse y
}

implicit def optionTEq[F[_], A](implicit FA: Eq[F[Option[A]]]): Eq[OptionT[F, A]] =
FA.on(_.value)

Expand Down
6 changes: 3 additions & 3 deletions tests/src/test/scala/cats/tests/OptionTTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package cats.tests

import cats.{Applicative, Id, Monad, Show}
import cats.data.{OptionT, Validated, Xor}
import cats.laws.discipline.{ApplicativeTests, FunctorTests, MonadCombineTests, SerializableTests}
import cats.laws.discipline.{ApplicativeTests, FunctorTests, MonadTests, SerializableTests}
import cats.laws.discipline.arbitrary._
import org.scalacheck.{Arbitrary, Gen}

Expand Down Expand Up @@ -146,8 +146,8 @@ class OptionTTests extends CatsSuite {
}
}

checkAll("OptionT[List, Int]", MonadCombineTests[OptionT[List, ?]].monad[Int, Int, Int])
checkAll("MonadOptionT[List, ?]]", SerializableTests.serializable(Monad[OptionT[List, ?]]))
checkAll("Monad[OptionT[List, Int]]", MonadTests[OptionT[List, ?]].monad[Int, Int, Int])
checkAll("Monad[OptionT[List, ?]]", SerializableTests.serializable(Monad[OptionT[List, ?]]))

{
implicit val F = ListWrapper.functor
Expand Down

0 comments on commit 6469705

Please sign in to comment.