我正在尝试为一个具有多个类型参数的类型实现cats Monad
实例。我查看了cats Either
实例,以了解如何在那里完成。下面是从cats中复制的Either
Monad
实例代码的一部分:
import cats.Monad
object EitherMonad {
implicit def instance[A]: Monad[Either[A, ?]] =
new Monad[Either[A, ?]] {
def pure[B](b: B): Either[A, B] = Right(b)
def flatMap[B, C](fa: Either[A, B])(f: B => Either[A, C]): Either[A, C] =
fa.right.flatMap(f)
}
}
它无法编译并出现错误:
error: not found: type ?
当我为自己的类型创建实例时,?
类型是什么,我该如何使用它?