I've read someone on the internet pondering parameter negotiation. I could also imagine some experience-based inference.
For example: a method has two parameters of the same type.
- Positional arguments: based on the sequence of listing the parameters
- Keyword arguments: based on some arbitrary name-labels of the parameters
- Type based arguments: based on the type of the parameters if distinguishable
Drawbacks:
- sequence is mostly arbitrary, has to be looked up every time
- keywords require inventin a new interface domain language for every single method
- type based only works if clearly distinguishable types passed
I can imagine parameter negotiation for overloading in a way that if whatever is passed is not clearly distinguishable, the method lets the caller now about the problem, and the caller has to add additional information or give up on the call.
I can imagine experience based inference in a way that each method learns which values are usually passed for each parameter and thus can infer for newly arriving values without designation which parameter it probably will be.
I could also imagine some semantically structured data model like in schema.org, which would avoid any confusion about types and positions, but does not need to reinvent a new interface language for every method you write, as there exists a shared semantic language.
I could imagine Wolfram Language going in that direction?