首页 > 解决方案 > 如何强制 F[_] 成为 Monad 的一个实例

问题描述

我有以下类定义:

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

我该如何存档?

标签: scalafunctional-programmingscala-cats

解决方案


导入语法

import cats.syntax.flatMap._

由于cats.effect.Syncextends cats.Monad(and cats.FlatMap) 和你有implicit sync: Sync[F]这应该足够了。


推荐阅读