Dear all,

I am playing around with Expression Problem in the fashion of LMS. I have faced the following puzzle:

```
trait NA {
trait Exp {
def + (that: Exp) = Add(this, that)
}
case class Num(n: Int) extends Exp
case class Add(l: Exp, r: Exp) extends Exp
}
```

Now, if I try to add a case for multiplication to my expressions

```
trait NAM extends NA {
trait Exp extends super.Exp {
def * (that: Exp) = Mul(this, that)
}
case class Mul(l: Exp, r: Exp) extends Exp
}
```

I get the following error

`value * is not a member of Num`

for the following expression:

`Num(2) * Num(5) + Num(4)`

Without the syntactic sugaring, everything is fine – as prescribed by LMS. How can I do the syntactic sugaring?

TIA,

–Hossein