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]
答案 0 :(得分:2)
您要导入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
}
此外,在猫0.9.0之前未添加it seems Foldable.intercalate
。