import cats._
import cats.data._
import cats.implicits._
import cats.instances.all._
...
def test = Foldable[List].intercalate(List("a", "b", "c"), "-")
...
结果进入:
could not find implicit value for parameter instance: cats.Foldable[List]
为什么它不起作用以及如何解决?看来这只是他们文档的副本:
scala> import cats.implicits._
scala> Foldable[List].intercalate(List("a","b","c"), "-")
res0: String = a-b-c
编辑1:
即使删除了import cats.instances.all._
,建议它仍然行不通。现在它崩溃了:
value intercalate is not a member of cats.Foldable[List]
您正在两次导入Foldable[List]
的实例:一次通过import cats.implicits._
,一次通过import cats.instances.all._
。他们变得模棱两可。
查看源,您可以看到cats.instances.all
是cats.implicits
的子集。简化:
package cats {
package object instances {
object all extends AllInstances
}
object implicits extends syntax.AllSyntax with instances.AllInstances
}
另外,似乎没有添加Foldable.intercalate
,直到CATS 0.9.0。