It can actually be very important to be abstracting over context as it is the key element of programming techniques. Martin Odersky argues that implicit parameters found in Scala are a canonical way to express context and that implicit function types are the right way to abstract over it.
How To Abstract Over Context
Programming is fundamentally about abstraction. Without abstraction, we'd all be still programming in assembly language. A very important part of programming is context - to understand a program text one must also understand the environment including "other code" in which the program fragment is to be executed. So, can we abstract over context? And should we be doing that?
In fact, abstracting over context seems to be important, because it is the core of a large variety of programming techniques, including "monkey patching", dependency injection frameworks, dynamic scoping, receiver functions, type classes, the reader monad, the cake pattern, etc. Some of these techniques are more ad-hoc than others. In my talk, I will argue that implicit parameters as they are found in Scala are a canonical way to express context and that implicit function types are the right way to abstract over it.
DConf is the main face-to-face event for everyone in the D programming language community and anyone who wants to know what all the fuss is about. They are proud to be hosted by their partner QA Systems through the organizational expertise of HLMC.