【发布时间】:2017-06-29 04:24:04
【问题描述】:
typelevel 的猫(0.9.0 版)有一个用于 Try 的 Functor 实例
object catsTry {
import cats.Functor
import cats.instances.try_._
import scala.util.Try
val f = implicitly[Functor[Try]] //compile
}
虽然 scalaz(版本 7.3.0-M12)中没有 Try 的 Functor 实例。
object scalazTry {
import scalaz._
import Scalaz._
import scala.util.Try
val f = implicitly[Functor[Try]] // won't compile
}
我想知道为什么 scalaz 不为 Try 提供 Functor 实例?
附:感谢 Ren 的 cmets。我在https://issues.scala-lang.org/browse/SI-6284上试过这个案子
@ Success(1) map { ((i:Int)=>numberOrDefault(i)) compose divideByZero }
res3: Try[Int] = Failure(java.lang.ArithmeticException: / by zero)
@ Success(1) map divideByZero map ((i:Int)=>numberOrDefault(i))
res4: Try[Int] = Failure(java.lang.ArithmeticException: / by zero)
看起来法律是成立的。我错过了什么吗?
【问题讨论】:
标签: scala try-catch functor scalaz