• Publications
  • Influence
An Overview of the Scala Programming Language
This paper gives an overview of the Scala language for readers who are familar with programming methods and programming language design.
Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs
It is argued that lightweight modular staging enables a form of language virtualization, i.e. allows to go from a pure-library embedded language to one that is practically equivalent to a stand-alone implementation with only modest effort.
Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition
Programming in Scala introduces functional programming from the practitioner's perspective, and describes advanced language features that can make you a better, more productive developer.
Making the future safe for the past: adding genericity to the Java programming language
GJ increases expressiveness and safety: code utilizing generic libraries is no longer buried under a plethora of casts, and the corresponding casts inserted by the translation are guaranteed to not fail.
Pizza into Java: translating theory into practice
Pizza is a strict superset of Java that incorporates three ideas from the academic community: parametric polymorphism, higher-order functions, and algebraic data types. Pizza is defined by
Scalable component abstractions
Three programming language abstractions are identified for the construction of reusable components: abstract type members, explicit selftypes, and modular mixin composition, which enable an arbitrary assembly of static program parts with hard references between them to be transformed into a system of reusable component.
Independently Extensible Solutions to the Expression Problem
Solutions to the expression problem are proposed that make it possible to combine independent extensions in a flexible, modular, and typesafe way and are formulated in the programming language Scala.
Programming in Scala
1. Getting Started with APM 2. Business Justification 3. Assessments 4. Staffing and Responsibilities 5. APM Patterns 6. The Pilot Evaluation 7. Deployment Strategies 8. Essential Processes 9.
Type Inference with Constrained Types
This paper presents a general framework HM(X), analogous to the CLP(X) framework in constrained logic programming, for Hindley/Milner style type systems with constraints, and shows that the type system is sound with respect to a standard untyped compositional semantics.