How do you use scalaz.WriterT for logging in a for expression?

前端 未结 2 1824
再見小時候
再見小時候 2021-02-01 05:43

How do you use scalaz.WriterT for logging?

2条回答
  •  情书的邮戳
    2021-02-01 05:51

    type OptionLogger[A] = WriterT[Option, NonEmptyList[String], A]
    
          val two: OptionLogger[Int] = WriterT.put(2.some)("The number two".pure[NonEmptyList])
          val hundred: OptionLogger[Int] = WriterT.put(100.some)("One hundred".pure[NonEmptyList])
    
          val twoHundred = for {
            a <- two
            b <- hundred
          } yield a * b
    
          twoHundred.value must be equalTo(200.some)
    
    
          val log = twoHundred.written map { _.list } getOrElse List() mkString(" ")
          log must be equalTo("The number two One hundred")
    

提交回复
热议问题