Я написал трейт для сортировки итераций в Scala, и на создание класса, с которым я мог бы его смешивать, потребовалось почти столько же времени, сколько потребовалось для написания трейта. Почему было принято дизайнерское решение запретить пользователям писать такие вещи, как:
new List[Int] with SuperAwesomeTrait[Int]?
Теперь, если я хочу это сделать, мне нужно сделать какой-нибудь странный хак, например,
class StupidList extends LinearSeq {
val inner = List()
/* reimplement list methods by calling into inner */
}
, а затем
new StupidList[Int] with SuperAwesomeTrait[Int].