How To Abstract Over Context

Event details
Date | 08.06.2018 |
Hour | 14:30 › 15:15 |
Location | |
Category | Conferences - Seminars |
By Prof. Martin Odersky
Abstract
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.
Bio
Martin Odersky heads the programming research group at EPFL. His research interests cover fundamental as well as applied aspects of programming languages. They include semantics, type systems, programming language design, and compiler construction. The main focus if his work lies in the integration of object-oriented and functional programming. His research thesis is that the two paradigms are just two sides of the same coin and should be unified as much as possible. To prove this he has experimented a number of language designs, from Pizza to GJ to Functional Nets. He has also influenced the development of Java as a co-designer of Java generics and as the original author of the current javac reference compiler. His current work concentrates on the Scala programming language, which unifies FP and OOP, while staying completely interoperable with Java and .NET.
Practical information
- General public
- Free
Contact
- Host: Laboratory for Automated Reasoning and Analysis, http://lara.epfl.ch