Scala almost has this. You can declare a function with "implicit" arguments, and the compiler will look for something that matches the requirements in each calling scope and insert it automatically.
It does not, however, automatically infer the implicit parameters based on usage of implicit arguments in the function body, though.
It does not, however, automatically infer the implicit parameters based on usage of implicit arguments in the function body, though.