Adriaan Moors

dblp:67/752 · DBLP profile ↗
← Back
6ranked-venue papers
2as first author
0since 2021 · last 2012
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 5 · 2 first-authorTheory of computation · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Programming languages and type systems · 92% Compilers and program optimization · 8%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
GPUs and heterogeneous computing · 67% Parallel and multicore computing · 33%

Topics — the 8 heaviest of 9, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › type systems › polymorphism
type classes
0.112010
Type classes as objects and implicits · OOPSLA 2010
GPUs and heterogeneous computing
heterogeneous parallel programming
0.112010
Language virtualization for heterogeneous parallel computing · OOPSLA 2010
GPUs and heterogeneous computing
heterogeneous programming models
0.112010
Language virtualization for heterogeneous parallel computing · OOPSLA 2010
Parallel and multicore computing
parallel programming models
0.112010
Language virtualization for heterogeneous parallel computing · OOPSLA 2010
Programming languages and type systems › type systems › polymorphism
generics
0.112008
Generics of a higher kind · OOPSLA 2008
Programming languages and type systems › type systems › polymorphism
parametric polymorphism
0.112008
Generics of a higher kind · OOPSLA 2008
Programming languages and type systems
type systems
0.112008
Generics of a higher kind · OOPSLA 2008
Programming languages and type systems › type systems › polymorphism
ad-hoc polymorphism
0.012010
Type classes as objects and implicits · OOPSLA 2010

Methods — techniques the papers use, named apart from their topics

domain-specific language design · 0.2
YearPublicationVenuePosition
2012 Scala-virtualized
abstract
Scala-Virtualized extends the Scala language to better support hosting embedded DSLs. Embedding a DSL in Scala-Virtualized comes with all the benefits of a shallow embedding thanks to Scala's flexible syntax, without giving up analyzing and manipulating the domain program -- typically exclusive to deep embeddings. Through lightweight modular staging, implemented in standard Scala, the benefits of a deep embedding are recovered with little overhead. Scala-Virtualized lifts more of the language's built-in constructs and static information to complete this support and make it more convenient. We illustrate how Scala-Virtualized makes Scala an even better host for embedded DSLs along three axes of customizing the language: syntax, run-time behavior and static semantics.
Adriaan Moors, Tiark Rompf, Philipp Haller, Martin Odersky
PEPM1
2010 Language virtualization for heterogeneous parallel computing
abstract
As heterogeneous parallel systems become dominant, application developers are being forced to turn to an incompatiblemix of low level programming models (e.g. OpenMP, MPI, CUDA, OpenCL). However, these models do little to shield developers from the difficult problems of parallelization, data decomposition and machine-specific details. Most programmersare having a difficult time using these programming models effectively. To provide a programming modelthat addresses the productivity and performance requirements for the average programmer, we explore a domainspecificapproach to heterogeneous parallel programming.
Hassan Chafi, Zach DeVito, Adriaan Moors, Tiark Rompf, Arvind K. Sujeeth, Pat Hanrahan, Martin Odersky, Kunle Olukotun
OOPSLA3
2010 Type classes as objects and implicits
abstract
Type classes were originally developed in Haskell as a disciplined alternative to ad-hoc polymorphism. Type classes have been shown to provide a type-safe solution to important challenges in software engineering and programming languages such as, for example, retroactive extension of programs. They are also recognized as a good mechanism for concept-based generic programming and, more recently, have evolved into a mechanism for type-level computation.
Bruno C. d. S. Oliveira, Adriaan Moors, Martin Odersky
OOPSLA2
2009 Fighting bit Rot with Types (Experience Report: Scala Collections)
abstract
We report on our experiences in redesigning Scala's collection libraries, focussing on the role that type systems play in keeping software architectures coherent over time. Type systems can make software architecture more explicit but, if they are too weak, can also cause code duplication. We show that code duplication can be avoided using two of Scala's type constructions: higher-kinded types and implicit parameters and conversions.
Martin Odersky, Adriaan Moors
FSTTCS2
2008 Polymorphic embedding of dsls
abstract
The influential pure embedding methodology of embedding domain-specific languages (DSLs) as libraries into a general-purpose host language forces the DSL designer to commit to a single semantics. This precludes the subsequent addition of compilation, optimization or domain-specific analyses. We propose polymorphic embedding of DSLs, where many different interpretations of a DSL can be provided as reusable components, and show how polymorphic embedding can be realized in the programming language Scala. With polymorphic embedding, the static type-safety, modularity, composability and rapid prototyping of pure embedding are reconciled with the flexibility attainable by external toolchains.
Christian Hofer, Klaus Ostermann, Tillmann Rendel, Adriaan Moors
GPCE4
2008 Generics of a higher kind
abstract
With Java 5 and C# 2.0, first-order parametric polymorphism was introduced in mainstream object-oriented programming languages under the name of generics. Although the first-order variant of generics is very useful, it also imposes some restrictions: it is possible to abstract over a type, but the resulting type constructor cannot be abstracted over. This can lead to code duplication. We removed this restriction in Scala, by allowing type constructors as type parameters and abstract type members. This paper presents the design and implementation of the resulting type constructor polymorphism. Furthermore, we study how this feature interacts with existing object-oriented constructs, and show how it makes the language more expressive.
Adriaan Moors, Frank Piessens, Martin Odersky
OOPSLA1