【发布时间】:2010-12-24 14:28:26
【问题描述】:
我正在使用 scala-2.8.1 和 scalaz-5.0。谁能准确解释为什么在一种情况下可以推断出PartialApply1Of2 而在另一种情况下却不能推断出来?
scala> 1.success[String] <|*|> "Bah".fail[Int]
res1: scalaz.Validation[String,(Int, Int)] = Failure(Bah)
即使 (as has been asked before!) 方法 <|*|> 位于 MA 上,它也有效,它有一个类型参数,而不是两个(如 Validation 有)。我无法在我的 IDEA REPL 中使用 unicode,所以这里是:
object testy {
def main(args: Array[String]) {
import scalaz._
import Scalaz._
val ps = NonEmptyList(1.success[String], "Bah".fail[Int])
val res = ps.∘∘((_ : Int) % 2 == 0) //DOES NOT COMPILE
println(res)
}
}
我可以为调用提供特定类型,一切都很好。为什么scalac 不能推断?
ps.∘∘[PartialApply1Of2[Validation, String]#Apply, Int, Boolean]((_ : Int) % 2 == 0)
在我的 REPL 中,这实际上会导致 scalac 错误,而不是合理的错误消息
【问题讨论】:
标签: scala type-inference scalaz