如何找出 cats.Parallel 的函子?

How to figure out the functor for cats.Parallel?

因为 IntelliJ 不能很好地使用 Cats,我有时会在我的代码中明确指定类型参数以避免丑陋的红线。例如,如果我们假设这会在 IO.pure(x.toString)

下给出一条红线
List(1, 2, 3).traverse(x => IO.pure(x.toString))

然后我可以轻松添加类型,IntelliJ 很高兴:

List(1, 2, 3).traverse[IO, String](x => IO.pure(x.toString))

现在,使用 parTraverse 似乎有点困难,因为仿函数参数:

List(1, 2, 3).parTraverse[IO, ???, String](x => IO.pure(x.toString)) //what is ???

这里有什么方法可以弄清楚 F[_] 参数的类型,这样我就可以取悦 IntelliJ 还是这是某种部分统一的东西,所以我注定要丑陋?谢谢

如果您转到 scaladoc api of cats-effects,并搜索 Parallel 实例,它只会列出一个生成 Parallel[IO, ???] 的隐式方法,即由 Parallel[IO, Par] 提供的cats.effect.IO.ioParallel。所以,似乎 cats.effect.IO.Par 应该可以解决问题:

List(1, 2, 3).parTraverse[IO, Par, String](x => IO.pure(x.toString))