如何强制 F[_] 成为 Monad 的实例

How to enforce F[_] to be an instance of Monad

我有以下 class 定义:

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.......

如何存档?

导入语法

import cats.syntax.flatMap._

因为 cats.effect.Sync 扩展了 cats.Monad(和 cats.FlatMap)并且你有 implicit sync: Sync[F] 这应该足够了。