Skip to content

Commit 4a740b3

Browse files
committed
MonadTrans instance for RWST; fix MonadTrans test for StateT
1 parent b4995b2 commit 4a740b3

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

core/src/main/scala/cats/data/ReaderWriterStateT.scala

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -338,9 +338,9 @@ private[data] sealed trait RWSTInstances extends RWSTInstances1 {
338338
implicit def L: Monoid[L] = L0
339339
}
340340

341-
implicit def catsDataLiftForRWST[E, S, L](
342-
implicit L0: Monoid[L]): TransLift.Aux[ReaderWriterStateT[?[_], E, S, L, ?], Applicative] =
343-
new RWSTTransLift[E, S, L] {
341+
implicit def catsDataMonadTransForRWST[E, S, L](
342+
implicit L0: Monoid[L]): MonadTrans[ReaderWriterStateT[?[_], E, S, L, ?]] =
343+
new RWSTMonadTrans[E, S, L] {
344344
implicit def L: Monoid[L] = L0
345345
}
346346
}
@@ -487,12 +487,10 @@ private[data] sealed trait RWSTMonadState[F[_], E, S, L]
487487
def set(s: S): ReaderWriterStateT[F, E, S, L, Unit] = ReaderWriterStateT.set(s)
488488
}
489489

490-
private[data] sealed trait RWSTTransLift[E, S, L] extends TransLift[ReaderWriterStateT[?[_], E, S, L, ?]] {
490+
private[data] sealed trait RWSTMonadTrans[E, S, L] extends MonadTrans[ReaderWriterStateT[?[_], E, S, L, ?]] {
491491
implicit def L: Monoid[L]
492-
type TC[F[_]] = Applicative[F]
493-
494-
def liftT[F[_], A](fa: F[A])(implicit F: Applicative[F]): ReaderWriterStateT[F, E, S, L, A] =
495-
ReaderWriterStateT.lift(fa)
492+
def liftT[M[_]: Monad, A](ma: M[A]): ReaderWriterStateT[M, E, S, L, A] =
493+
ReaderWriterStateT.lift(ma)
496494
}
497495

498496
private[data] sealed trait RWSTSemigroupK[F[_], E, S, L] extends SemigroupK[ReaderWriterStateT[F, E, S, L, ?]] {
@@ -507,7 +505,7 @@ private[data] sealed trait RWSTSemigroupK[F[_], E, S, L] extends SemigroupK[Read
507505

508506
private[data] sealed trait RWSTMonadCombine[F[_], E, S, L]
509507
extends MonadCombine[ReaderWriterStateT[F, E, S, L, ?]] with RWSTMonad[F, E, S, L]
510-
with RWSTSemigroupK[F, E, S, L] with RWSTTransLift[E, S, L] {
508+
with RWSTSemigroupK[F, E, S, L] with RWSTMonadTrans[E, S, L] {
511509

512510
implicit def F: MonadCombine[F]
513511
override def G: MonadCombine[F] = F

tests/src/test/scala/cats/tests/ReaderWriterStateTTests.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,13 @@ class ReaderWriterStateTTests extends CatsSuite {
344344
checkAll("ReaderWriterStateT[ListWrapper, String, Int, String, Int]",
345345
SemigroupKTests[ReaderWriterStateT[ListWrapper, String, Int, String, ?]].semigroupK[Int])
346346
}
347+
348+
{
349+
implicit def F = ListWrapper.monad
350+
351+
checkAll("MonadTrans[ReaderWriterStateT[?[_], String, Int, String, ?]]",
352+
MonadTransTests[ReaderWriterStateT[?[_], String, Int, String, ?]].monadTrans[ListWrapper, Int, Int])
353+
}
347354
}
348355

349356
object ReaderWriterStateTTests {

tests/src/test/scala/cats/tests/StateTTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ class StateTTests extends CatsSuite {
235235

236236
checkAll("StateT[ListWrapper, Int, Int]", MonadTests[StateT[ListWrapper, Int, ?]].monad[Int, Int, Int])
237237
checkAll("Monad[StateT[ListWrapper, Int, ?]]", SerializableTests.serializable(Monad[StateT[ListWrapper, Int, ?]]))
238-
checkAll("MonadTrans[EitherT[?[_], String, ?]]", MonadTransTests[EitherT[?[_], String, ?]].monadTrans[ListWrapper, Int, Int])
238+
checkAll("MonadTrans[StateT[?[_], Int, ?]]", MonadTransTests[StateT[?[_], String, ?]].monadTrans[ListWrapper, Int, Int])
239239

240240
Monad[StateT[ListWrapper, Int, ?]]
241241
FlatMap[StateT[ListWrapper, Int, ?]]

0 commit comments

Comments
 (0)