找不到参数仿函数的隐式值:cats.Functor[Some]

could not find implicit value for parameter functor: cats.Functor[Some]

我正在尝试学习 scala with cats 电子书中的一个简单示例。这是我的代码

import cats.Semigroupal
import cats.instances.option._
import cats.syntax.apply._
import cats.implicits._
case class Name(fName: String, lName: String)
(Some("foo"), Some("bar")).mapN(Name.apply)

我收到错误消息

cmd4.sc:1: could not find implicit value for parameter functor: cats.Functor[Some]
val res4 = (Some("foo"), Some("bar")).mapN(Name.apply)

我也试过导入

cats.functor._
cats.syntax.functor._

问题在于 Functor 的类型参数是不变的,因此您需要让 Scala 编译器将元组的类型视为 (Option[String], Option[String]) 而不是 (Some[String], Some[String])。您可以使用

("foo".some, "bar".some).mapN(Name.apply)