The goal of my thesis is to enable formal reasoning about the Scala programming language. To that end I present a core calculus that formalizes Scala's i) essential features in a ii) type-safe way and is iii) easy to extend with more features. I build on the Dependent Object Types (DOT) calculus that formalizes path-dependent types. My contributions are i) a generalization of DOT with types that depend on paths of arbitrary length, ii) a simple, extensible type-safety proof for DOT, and iii) an extension of DOT with mutable references. The simple proof makes designing smaller extensions such as mutation straightforward, and larger extensions, such as full support for paths, approachable. Adding fully path-dependent types to DOT allows us ...
Path dependent types form a central component of the Scala programming language. Coupled with other ...
Scala is a generic object-oriented programming language with higher-order abstractions. Programmin...
Production compilers for programming languages face multiple requirements. They should be correct, a...
Scala is a functional and object-oriented programming language which unifies concepts from object an...
This is the artifact for our OOPSLA'19 paper that presents pDOT, a generalization of the Dependent O...
Focusing on path-dependent types, the paper develops foundations for Scala from first principles. St...
A scalable programming language is one in which the same concepts can describe small as well as larg...
Dependent Object Types, or DOT, is a family of calculi developed to study the Scala programming lang...
Scala's type system unifies aspects of ML modules, object-oriented, and functional programming. The ...
Abstract: The metatheory of Scala’s core type system — the Dependent Object Types (DOT) calculus — i...
The Dependent Object Type (DOT) calculus was designed to put Scala on a sound basis, but while DOT r...
The Dependent Object Types (DOT) family of calculi has been proposed as a new theoretic foundation f...
Reference mutability is a type-based technique for controlling mutation that has been thoroughly stu...
We present a minimal core calculus that captures interesting constructs of the Scala programming lan...
This is the artifact for our OOPSLA'20 paper that presents ιDOT, a Dependent Object Types calculus w...
Path dependent types form a central component of the Scala programming language. Coupled with other ...
Scala is a generic object-oriented programming language with higher-order abstractions. Programmin...
Production compilers for programming languages face multiple requirements. They should be correct, a...
Scala is a functional and object-oriented programming language which unifies concepts from object an...
This is the artifact for our OOPSLA'19 paper that presents pDOT, a generalization of the Dependent O...
Focusing on path-dependent types, the paper develops foundations for Scala from first principles. St...
A scalable programming language is one in which the same concepts can describe small as well as larg...
Dependent Object Types, or DOT, is a family of calculi developed to study the Scala programming lang...
Scala's type system unifies aspects of ML modules, object-oriented, and functional programming. The ...
Abstract: The metatheory of Scala’s core type system — the Dependent Object Types (DOT) calculus — i...
The Dependent Object Type (DOT) calculus was designed to put Scala on a sound basis, but while DOT r...
The Dependent Object Types (DOT) family of calculi has been proposed as a new theoretic foundation f...
Reference mutability is a type-based technique for controlling mutation that has been thoroughly stu...
We present a minimal core calculus that captures interesting constructs of the Scala programming lan...
This is the artifact for our OOPSLA'20 paper that presents ιDOT, a Dependent Object Types calculus w...
Path dependent types form a central component of the Scala programming language. Coupled with other ...
Scala is a generic object-oriented programming language with higher-order abstractions. Programmin...
Production compilers for programming languages face multiple requirements. They should be correct, a...