Возвращает один и тот же тип коллекции, по-разному параметризованный
Даниэль Собрал показал, как мы можем создать метод, который возвращает тот же тип коллекции, на который он был вызван, в своем ответе на этот вопрос:Возвращение исходного типа коллекции в универсальном методе
Можно ли сделать то же самое для метода, который использует сопоставление для возврата версии с разными параметрами одного и того же типа коллекции?
Например
def foo[A](xs: GenTraversable[A]) = xs map (_.toString)
foo( List(1, 2, 3) )
возвращаетсяres: GenTraversable[String] = List(1, 2, 3)
Может ли это быть адаптировано так, чтобы
foo( Set(1, 2, 3) )
возвращаетSet[String]
foo( List(1, 2, 3) )
возвращаетList[String]
foo( Vector(1, 2, 3) )
возвращаетVector[String]