Как заставить F [_] быть экземпляром Monad - PullRequest
2 голосов
/ 29 сентября 2019

У меня есть следующее определение класса:

final case class Creator[F[_]](topic: String, discovery: ServiceDiscovery[F])
                                     (implicit sync: Sync[F]) {
  import JsonDeserializer._

  private def setting: ConsumerSettings[F, String, JsonDecoder] =
     discovery
       .kafkaAddr

Я бы хотел, чтобы F[_] был экземпляром Monad, чтобы я мог использовать flatMap, например:

 private def setting: ConsumerSettings[F, String, JsonDecoder] =
     discovery
       .kafkaAddr
       .flatMap.......

Как мне его заархивировать?

1 Ответ

7 голосов
/ 29 сентября 2019

Синтаксис импорта

import cats.syntax.flatMap._

Поскольку cats.effect.Sync расширяется cats.Monadcats.FlatMap) и у вас есть implicit sync: Sync[F], этого должно быть достаточно.

...