对于scala编译器,myMethod方法引用与myMethod [T]的不同之处是什么?

时间:2015-02-02 13:03:29

标签: scala scalaz

考虑以下代码行:

def fixBr[U](v: U)(implicit l: Lens[U, String]): U = ???
def fixAsterisk[U](show: Boolean)(v: U)(implicit l: Lens[U, String]): U = ???
def fixLinks[U](v: U)(implicit l: Lens[U, String]): U = ???

def fix1[T](show: Boolean)(what: List[T])(implicit l: Lens[T, String]) =
  what ∘ fixAsterisk(show) ∘ fixBr[T] ∘ fixLinks[T]

def fix2[T](show: Boolean)(what: List[T])(implicit l: Lens[T, String]) =
  what ∘ fixAsterisk(show) ∘ fixBr ∘ fixLinks

(这个有趣的unicode角色∘只是一张scalaz地图)

为什么fix1是一个有效的Scala代码,并且在fix2情况下编译器抱怨缺少对函数lfixBr的隐式参数fixLinks?在我看来,编译器应该能够看到U == T

0 个答案:

没有答案