From e9d768ecdcdc0d395ed41ee3cb586f64fda2fa1f Mon Sep 17 00:00:00 2001 From: Labra Date: Tue, 23 Aug 2016 08:31:58 +0200 Subject: [PATCH 1/2] Attempt to solve #1315 --- core/src/main/scala/cats/data/WriterT.scala | 8 +++++++- tests/src/test/scala/cats/tests/WriterTTests.scala | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/cats/data/WriterT.scala b/core/src/main/scala/cats/data/WriterT.scala index f0c683b595..9c85d97f52 100644 --- a/core/src/main/scala/cats/data/WriterT.scala +++ b/core/src/main/scala/cats/data/WriterT.scala @@ -57,7 +57,13 @@ final case class WriterT[F[_], L, V](run: F[(L, V)]) { def show(implicit F: Show[F[(L, V)]]): String = F.show(run) } -object WriterT extends WriterTInstances with WriterTFunctions + +object WriterT extends WriterTInstances with WriterTFunctions { + + def lift[F[_], L, V](fv: F[V])(implicit monoidL: Monoid[L], F: Applicative[F]): WriterT[F, L, V] = + WriterT(F.map(fv)(v => (monoidL.empty, v))) + +} private[data] sealed abstract class WriterTInstances extends WriterTInstances0 { diff --git a/tests/src/test/scala/cats/tests/WriterTTests.scala b/tests/src/test/scala/cats/tests/WriterTTests.scala index 1f589afe97..8263a34a9b 100644 --- a/tests/src/test/scala/cats/tests/WriterTTests.scala +++ b/tests/src/test/scala/cats/tests/WriterTTests.scala @@ -65,7 +65,15 @@ class WriterTTests extends CatsSuite { WriterT.valueT[Id, Int, Int](i).value should === (i) } } - + + test("Writer.pure and WriterT.lift are consistent") { + forAll { (i: Int) => + val writer: Writer[String, Int] = Writer.pure(i) + val writerT: Writer[String, Int] = WriterT.lift(Eval.now(i)) + writer.run should === (writerT.run) + } + } + test("show") { val writerT: WriterT[Id, List[String], String] = WriterT.put("foo")(List("Some log message")) writerT.show should === ("(List(Some log message),foo)") From 0dc8eb73b2ea418bdbae9d68c0b98334e3e190f5 Mon Sep 17 00:00:00 2001 From: Labra Date: Tue, 23 Aug 2016 09:40:41 +0200 Subject: [PATCH 2/2] Attempt to solve #1315 --- tests/src/test/scala/cats/tests/WriterTTests.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/src/test/scala/cats/tests/WriterTTests.scala b/tests/src/test/scala/cats/tests/WriterTTests.scala index 8263a34a9b..b41c680b23 100644 --- a/tests/src/test/scala/cats/tests/WriterTTests.scala +++ b/tests/src/test/scala/cats/tests/WriterTTests.scala @@ -68,9 +68,9 @@ class WriterTTests extends CatsSuite { test("Writer.pure and WriterT.lift are consistent") { forAll { (i: Int) => - val writer: Writer[String, Int] = Writer.pure(i) - val writerT: Writer[String, Int] = WriterT.lift(Eval.now(i)) - writer.run should === (writerT.run) + val writer: Writer[String, Int] = Writer.value(i) + val writerT: WriterT[Option, String, Int] = WriterT.lift(Some(i)) + writer.run.some should === (writerT.run) } }