In high-level programming languages, programmers do not need to worry about certain implementation details that compilers or interpreters do behind the scenes. However, this oftentimes results in some loss; in the former case, it is the inability to precisely communicate programmer’s intentions to a compiler that compromises safety, and in the latter case, it is the loss of performance because an interpreter needs to do extra work at runtime. Modern languages tend to address this problem differently, albeit rarely without serious limitations. In this dissertation, we develop lightweight programming abstractions whose implementation is practical in multi-paradigm high-level languages such as Scala and C++. The main idea of this work is explo...
Over the past decade, the Scala community has shown great interest in using type-level programming t...
We report on our experiences in redesigning Scala's collection libraries, focussing on the role that...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
In high-level programming languages, programmers do not need to worry about certain implementation d...
In high-level programming languages, programmers do not need to worry about certain implementation d...
Formal verification of real-world software systems remains challenging for a number of reasons, incl...
Production compilers for programming languages face multiple requirements. They should be correct, a...
Aliasing is a known source of challenges in the context of imperative object-oriented languages, whi...
Aliasing is a known source of challenges in the context of imperative object-oriented languages, whi...
Aliasing is a known source of challenges in the context of imperative object-oriented languages, whi...
Aliasing is a known source of challenges in the context of imperative object-oriented languages, whi...
Generic code increases programmer productivity as it increases code reuse. For example, the LinkedLi...
Most formal accounts of object-oriented languages have focussed on type soundness: the safety that t...
In the presence of parametric polymorphism, erasure-based languages such as Java and Scala handle pr...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
Over the past decade, the Scala community has shown great interest in using type-level programming t...
We report on our experiences in redesigning Scala's collection libraries, focussing on the role that...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
In high-level programming languages, programmers do not need to worry about certain implementation d...
In high-level programming languages, programmers do not need to worry about certain implementation d...
Formal verification of real-world software systems remains challenging for a number of reasons, incl...
Production compilers for programming languages face multiple requirements. They should be correct, a...
Aliasing is a known source of challenges in the context of imperative object-oriented languages, whi...
Aliasing is a known source of challenges in the context of imperative object-oriented languages, whi...
Aliasing is a known source of challenges in the context of imperative object-oriented languages, whi...
Aliasing is a known source of challenges in the context of imperative object-oriented languages, whi...
Generic code increases programmer productivity as it increases code reuse. For example, the LinkedLi...
Most formal accounts of object-oriented languages have focussed on type soundness: the safety that t...
In the presence of parametric polymorphism, erasure-based languages such as Java and Scala handle pr...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
Over the past decade, the Scala community has shown great interest in using type-level programming t...
We report on our experiences in redesigning Scala's collection libraries, focussing on the role that...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...