SPLASH 2016 Keynote: From DOT to Dotty -- Foundations and Types for Objects As Modules
Channel: SPLASH2016
Date: 2016-11-15

The utility of objects derives to a large degree form the fact that objects are natural modules, that is, building blocks from which larger modules are defined. Static type systems are essential for fine grained control what information is exposed in a module, and, conversely, what one is free to change inside a module. A good module or object system should follow three principles:

Everything can be nested in a module.
Everything can be parameterized with a module.
Module types are interfaces, which can be abstracted.

In this talk I present DOT, a particularly simple calculus that can express systems following these principles. DOT has been developed as the foundation of the next version of Scala. I will also report on dotty, a new Scala compiler that implements the constructs of DOT in its core data structures and that synthesizes object oriented and functional programming concepts in several interesting new patterns.