On Mar 8, 2020, at 12:39 PM, John Cowan cowan@ccil.org wrote:
All the examples I have found (except Marc's, thank you Marc) involve using parameters in exactly this way, which I why I am especially interested in other use cases.
This situation can be generalized to any object whose methods take implicit parameters that depend on the thread and the object.
For example, imagine you have a class C with a method M, and you wish to generate debugging information whenever the current thread calls method M of obj, an instance of C. You only want the debugging information to be generated for that combination of obj and the current thread (possibly because many other threads call method M on other instances of C without any problem).
So each instance of C could have a field with a “debug” parameter object that would be parameterized by any thread needing debugging information to be generated.
If parameter objects could only be bound to global variables you couldn’t have such a fine level of control. First-class citizenship of parameter objects is very useful for scenarios like this. Similarly to procedures and continuations gaining in power when they are first-class.
Marc