Определите ∙
как метод для I
.
sealed abstract class Term
case class II(x: Term, y: Term) extends Term
case class I() extends Term {
def ∙(o: Term) = II(this, o)
}
Теперь I() ∙ I()
будет работать, возвращая II
.
Не уверен, что вы пытаетесь достичь, хотя.