Misturando características genéricas em classes parametrizadas sem duplicar parâmetros de tipo

Vamos supor que eu quero criar uma característica que eu possa misturar em qualquer Traversable [T]. No final, eu quero poder dizer coisas como:

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

e tem métodos em MoreFilterOperations que são expressos em qualquer coisa que o Traversable tenha a oferecer, como:

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

No entanto, o problema é claramente que T não está definido como um parâmetro de tipo em MoreFilterOperations. Depois que faço isso, é possível, é claro, mas meu código seria:

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

ou se eu definir uma variável desse tipo:

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

qual émaneira de verboso para o meu gosto. Eu gostaria de ter o traço definido de tal maneira que eu pudesse escrever o último como:

var m2: Map[String,String] with MoreFilterOperations

Tentei auto-tipos, membros abstratos, mas não resultou em nada útil. Alguma pista?

questionAnswers(3)

yourAnswerToTheQuestion