Over the past decade, the Scala community has shown great interest in using type-level programming to obtain additional type safety. Unfortunately, the lack of support from the Scala compiler has been a barrier to the adoption of that technique, notably due to its negative impact on compilation times. In this thesis, we present three techniques for type-level programming in Scala. First, we explain the status quo, implicits, and show how we can divert them from their intended use to write ad hoc type-level programs. Second, we propose a generalization of Scala's singleton types, which adds the ability to manipulate term-level programs at the type level. Third, we introduce match types, a type-level equivalent of pattern matching, which we i...
We present a minimal core calculus that captures interesting constructs of the Scala programming lan...
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...
Type-level programming is becoming more and more popular in the realm of functional programming. How...
Datatype-generic programming involves parametrization of programs by the shape of data, in the form ...
Datatype-generic programming involves parametrization of programs by the shape of data, in the form ...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
A static type system is an important tool in efficiently developing correct software. We describe th...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
Type classes were originally developed in Haskell as a disciplined alternative to ad-hoc polymorphis...
We report on our experiences in redesigning Scala's collection libraries, focussing on the role that...
Most formal accounts of object-oriented languages have focussed on type soundness: the safety that t...
Datatype-generic programming (DGP) involves parametrization of programs by the shape of data, in the...
Datatype-generic programming (DGP) involves parametrization of programs by the shape of data, in the...
ABSTRACT. We report on our experiences in redesigning Scala’s collection libraries, focussing on the...
We present a minimal core calculus that captures interesting constructs of the Scala programming lan...
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...
Type-level programming is becoming more and more popular in the realm of functional programming. How...
Datatype-generic programming involves parametrization of programs by the shape of data, in the form ...
Datatype-generic programming involves parametrization of programs by the shape of data, in the form ...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
A static type system is an important tool in efficiently developing correct software. We describe th...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
Type classes were originally developed in Haskell as a disciplined alternative to ad-hoc polymorphis...
We report on our experiences in redesigning Scala's collection libraries, focussing on the role that...
Most formal accounts of object-oriented languages have focussed on type soundness: the safety that t...
Datatype-generic programming (DGP) involves parametrization of programs by the shape of data, in the...
Datatype-generic programming (DGP) involves parametrization of programs by the shape of data, in the...
ABSTRACT. We report on our experiences in redesigning Scala’s collection libraries, focussing on the...
We present a minimal core calculus that captures interesting constructs of the Scala programming lan...
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...