ParTraverse не является значением NonEmptyList

Я следую инструкциям на веб-сайте Cats IO, чтобы запустить последовательность эффектов параллельно:

Мой код выглядит так:


    val maybeNonEmptyList: Option[NonEmptyList[Urls]] = NonEmptyList.fromList(urls)

    val maybeDownloads: Option[IO[NonEmptyList[Either[Error, Files]]]] = maybeNonEmptyList map { urls =>
      urls.parTraverse(url => downloader(url))
    }

Но я получаю сообщение об ошибке времени компиляции:

value parTraverse is not a member of cats.data.NonEmptyList[Urls]
[error]       urls.parTraverse(url => downloader(url))

Я импортировал следующее:

import cats.data.{EitherT, NonEmptyList}
import cats.effect.{ContextShift, IO, Timer}
import cats.implicits._
import cats.syntax.parallel._

а также у меня есть следующие имплициты:

    implicit val cs: ContextShift[IO] = IO.contextShift(ExecutionContext.global)
    implicit val timer: Timer[IO]     = IO.timer(ExecutionContext.global)

Почему я все еще получаю проблему?


person Mojo    schedule 18.02.2020    source источник
comment
Удалите этот import cats.syntax.parallel._ неявный импорт, который сделает все возможным, добавление еще одного приведет к двусмысленности.   -  person Luis Miguel Mejía Suárez    schedule 18.02.2020
comment
Спасибо братан - получилось!   -  person Mojo    schedule 18.02.2020
comment
поэтому, если вы дважды импортируете одно и то же неявное, оно становится неоднозначным. Таким образом, библиотеки moat позволяют импортировать имплициты по частям или все сразу, выберите стиль, который вы предпочитаете, но придерживайтесь одного.   -  person Luis Miguel Mejía Suárez    schedule 18.02.2020