Подпись TraversableLike.flatMap
выглядит следующим образом:
def flatMap[B, Th](f : (A) => Traversable[B])(implicit bf : CanBuildFrom[Repr, B, Th]) : Th
Подпись GenericTraversableTemplate.flatten
:
def flatten[B](implicit asTraversable : (A) => Traversable[B]) : CC[B]
Почему последний метод (который, как мне кажется, отличается от flatMap
только в том смысле, что функция преобразования implicit
) не может быть определен на TraversableLike
как:
def flatten[B, Th](implicit asTraversable: (A) => Traversable[B],
implicit bf : CanBuildFrom[Repr, B, Th]) : Th
Есть ли какая-то причина, по которой это должно быть так?