1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
module test { trait A { type T; } trait B { type T; } def functor(x: A): B { type T = x.T } = new B { type T = x.T; }; val a = new A { type T = String }; val b = functor(a); val s: b.T = "coucou"; }