With named parameters like

```
def f(x : Int = 1, y : Int = 2) = x * y

```

your parameter names become part of the interface 

```
f(x=3)

```

Now if you want to change the parameter names locally, you are forced to perserve the public name of the parameter:

```
    def f(x : Int = 1, y : Int = 2) = {
        val (a,b) = (x,y)
        a * b
    }

```

If this a real problem? Is there a syntax to support this directly? Who do other languages handle this?

A small illustration of the problems you can run into if you switch parameter names, as suggested by Jon.

```
trait X{ def f(x : Int, y : Int) }
class A extends X{
    override def f(y : Int, x : Int) = println("" + y + x) 
}
val a = new A
scala> a.f(x = 1, y = 2)
21
scala> (a : X).f(x = 1, y = 2)
12

```