Как выяснить функтор для котов. Параллельно? - PullRequest
0 голосов
/ 13 ноября 2018

Поскольку 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 это кажется немного сложнее из-за параметра functor:

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

Есть ли способ выяснить тип параметра F[_], чтобы я мог порадовать IntelliJили это какая-то частичная вещь объединения, и поэтому я обречен на уродство?Спасибо

1 Ответ

0 голосов
/ 13 ноября 2018

Если вы перейдете к скалярному API-интерфейсу кошачьих эффектов и выполните поиск экземпляров 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))
...