如何使用猫类型类?
How to use cats typeclasses?
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
}
此外,it seems Foldable.intercalate
直到 cats 0.9.0 才被添加。
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
}
此外,it seems Foldable.intercalate
直到 cats 0.9.0 才被添加。