typelevel的貓(0.9.0版本)的函子實例嘗試爲什麼scala.util.Try在貓中有一個實例但不在scalaz中?
object catsTry {
import cats.Functor
import cats.instances.try_._
import scala.util.Try
val f = implicitly[Functor[Try]] //compile
}
雖然對在scalaz嘗試(版本7.3.0-M12)無函子實例。
object scalazTry {
import scalaz._
import Scalaz._
import scala.util.Try
val f = implicitly[Functor[Try]] // won't compile
}
我想知道爲什麼scalaz沒有提供Functor實例嗎?
P.S.感謝Ren的評論。我試過這個案子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)
它看起來像法律規定的。我錯過了什麼嗎?
討論https://github.com/typelevel/cats/pull/1059 – chenhry