我有以下代码段:
final case class Configuration(env: Env, user: String, password: String, address: String)
trait DbSetup[F[_]] {
type EnvT[A] = OptionT[F, A]
def system: EnvT[Env]
def user: EnvT[String]
def password: EnvT[String]
def address: EnvT[String]
}
object DbSetup {
def get[F[_] : Monad](s: DbSetup[F]): s.EnvT[Configuration] = ???
}
如何在实现mapN
的功能中使用Applicative函数get
来填充Configuration
?
答案 0 :(得分:6)
尝试
import cats.syntax.apply._
def get[F[_] : Monad](s: DbSetup[F]): s.EnvT[Configuration] =
(s.system, s.user, s.password, s.address).mapN(Configuration)
我可以建议您阅读Herding Cats或Scala with Cats吗?