Ответ 1
Рассмотрим это
class Foo[A, B]
new Foo[Bar with D with E, Bar with E] {}
против
new Foo[Bar with D, E, Bar with E] {}
Это просто не однозначно во всех случаях.
Новое для Scala. Язык довольно краткий.
Любопытно, почему для реализации нескольких признаков требуется несколько операторов "с".
Например:
class Foo extends Bar with A with B with C {}
против.
class Foo extends Bar with A, B, C {}
Рассмотрим это
class Foo[A, B]
new Foo[Bar with D with E, Bar with E] {}
против
new Foo[Bar with D, E, Bar with E] {}
Это просто не однозначно во всех случаях.