Я пытаюсь реализовать следующую черту:
trait Monad[M[_]] {
def pure[A](a: A): M[A]
def flatMap[A, B](ma: M[A], f: A => M[B]): M[B]
}
для типа Array:
def arrayMonad: Monad[Array] = new Monad[Array] {
def pure[A](a: A): Array[A] = Array(a)
def flatMap[A, B](a: Array[A], f: A => Array[B]): Array[B] = a flatMap f
}
Компилятор жалуется, что для A и B. нет ClassTags. Если я добавьте их (либо с неявным параметром, либо в стиле «[A: ClassTag]»), мне сказали, что мне не хватает реализации:
Missing implementations for 2 members. Stub implementations follow:
def flatMap[A, B](ma: Array[A], f: A => Array[B]): Array[B] = ???
def pure[A](a: A): Array[A] = ???
Может быть что-то очевидное, что я пропускаю, но Я не уверен, что это такое.