如何找出 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))
因为 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))