> Aligning with the need for a double declaration, we could say that the `expr` 
> part is the formal and external name of the parameter, and the `s` part is 
> the local and internal name of the binding.  So:
>
> int colorBlindHack(let int _ = red, let int _ = green, let int b = blue, …) …
>
> Huh.  Looks too close to optional arguments for comfort.  And how would you 
> combine it with optional arguments?

P.S.  (That is, Painting Shed.)  If we allowed Java the label-like syntax 
adopted by some languages for externally named keyword arguments it might look 
like this:

int colorBlindHack(red: int _, green: int _, blue: int, …)

The last argument keyworded as “blue” is bound to the name “blue” in the 
absence of other indication; the other choices being `blue: int _` for ignored 
argument and `blue: int b` for a different local name.

int colorHack(red: int, green: int, blue: int, …)   //keyword arguments

(The “L: FOO” syntax is already a thing in Java, see?)

So many bikesheds, so little time…

Reply via email to