Mezcla de rasgos genéricos en clases parametrizadas sin duplicar parámetros de tipo

Supongamos que quiero crear un rasgo que pueda mezclar en cualquier Traversable [T]. Al final, quiero poder decir cosas como:

val m = Map("name" -> "foo") with MoreFilterOperations

y tenga métodos en MoreFilterOperations que se expresen en todo lo que Traversable tiene para ofrecer, como:

def filterFirstTwo(f: (T) => Boolean) = filter(f) take 2

Sin embargo, el problema es claramente que T no está definido como un parámetro de tipo en MoreFilterOperations. Una vez que haga eso, es factible, por supuesto, pero luego mi código leería:

val m = Map("name" -> "foo") with MoreFilterOperations[(String,String)]

o si defino una variable de este tipo:

var m2: Map[String,String] with MoreFilterOperations[(String,String)] = ...

cual esway to verbose para mi gusto. Me gustaría tener el rasgo definido de tal manera que pudiera escribir el último como:

var m2: Map[String,String] with MoreFilterOperations

Traté de auto escribir, miembros de tipo abstracto, pero no ha resultado en nada útil. ¿Alguna pista

Respuestas a la pregunta(3)

Su respuesta a la pregunta