Próbuję zaimplementować instancję koty Monad
dla typu, który ma wiele parametrów typów. Przyjrzałem się instancji koty Either
, aby zobaczyć, jak to się stało. Część kodu Either
Monad
przykład z kotami jest kopiowany poniżej:Co to jest? rodzaj?
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)
}
}
To nie skompilować z błędem: error: not found: type ?
Jaki jest typ ?
i jak można go używać podczas tworzenia instancji dla własnej typy?
'?' Jest prawidłowym symbolem, w tym przypadku jest podobne do 'A'. –