如何使用CAT类型


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.allcats.implicits的子集。简化:

package cats {
  package object instances {
    object all extends AllInstances
  }
  object implicits extends syntax.AllSyntax with instances.AllInstances
}

另外,似乎没有添加Foldable.intercalate,直到CATS 0.9.0。

相关内容

  • 没有找到相关文章

最新更新