VLDB 2026 Research / reviewers in the wild / expert
Mark P. Jones
dblp:j/MarkPJones
· DBLP profile ↗
24ranked-venue papers
15as first author
0since 2021 · last 2020
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 23 · 14 first-authorTheory of computation · 1 · 1 first-author
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
6 papers |
Programming languages and type systems · 98% Requirements engineering and software design · 1% Runtime systems and virtual machines · 0% |
Topics — the 17 heaviest of 18, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › type systems › polymorphism
qualified types |
0.4 | 1 | 2020 | Partial type constructors: or, making ad hoc datatypes less ad hoc · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems
type systems |
0.4 | 1 | 2020 | Partial type constructors: or, making ad hoc datatypes less ad hoc · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems
language design |
0.1 | 2 | 2005 | Operating system construction in Haskell · SOSP 2005 Monad Transformers and Modular Interpreters · POPL 1995 |
Programming languages and type systems › type inference
first-class polymorphism |
0.0 | 1 | 1997 | First-class Polymorphism with Type Inference · POPL 1997 |
Programming languages and type systems › type systems
polymorphism |
0.0 | 1 | 1997 | First-class Polymorphism with Type Inference · POPL 1997 |
Programming languages and type systems
type inference |
0.0 | 1 | 1997 | First-class Polymorphism with Type Inference · POPL 1997 |
Requirements engineering and software design › modularity
modular programming |
0.0 | 1 | 1996 | Using Parameterized Signatures to Express Modular Structure · POPL 1996 |
Programming languages and type systems
module systems |
0.0 | 1 | 1996 | Using Parameterized Signatures to Express Modular Structure · POPL 1996 |
Programming languages and type systems
computational effects |
0.0 | 1 | 1995 | Monad Transformers and Modular Interpreters · POPL 1995 |
Programming languages and type systems › computational effects
monads |
0.0 | 1 | 1995 | Monad Transformers and Modular Interpreters · POPL 1995 |
Programming languages and type systems › computational effects
monad transformers |
0.0 | 1 | 1995 | Monad Transformers and Modular Interpreters · POPL 1995 |
Programming languages and type systems › type systems › polymorphism
ad-hoc polymorphism |
0.0 | 1 | 1993 | Implementing Type Classes · PLDI 1993 |
Programming languages and type systems › type systems › polymorphism
type classes |
0.0 | 1 | 1993 | Implementing Type Classes · PLDI 1993 |
Programming languages and type systems
abstract data types |
0.0 | 1 | 1997 | First-class Polymorphism with Type Inference · POPL 1997 |
Programming languages and type systems › type theory
existential types |
0.0 | 1 | 1996 | Using Parameterized Signatures to Express Modular Structure · POPL 1996 |
Programming languages and type systems
type theory |
0.0 | 1 | 1996 | Using Parameterized Signatures to Express Modular Structure · POPL 1996 |
Runtime systems and virtual machines › interpreter
interpreter generation |
0.0 | 1 | 1995 | Monad Transformers and Modular Interpreters · POPL 1995 |
Methods — techniques the papers use, named apart from their topics
type elaboration · 0.4system f · 0.4haskell · 0.1monad transformers · 0.0lazy evaluation · 0.0first-class continuations · 0.0call-by-value · 0.0call-by-name · 0.0type inference · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Partial type constructors: or, making ad hoc datatypes less ad hocabstractFunctional programming languages assume that type constructors are total. Yet functional programmers know better: counterexamples range from container types that make limiting assumptions about their contents (e.g., requiring computable equality or ordering functions) to type families with defining equations only over certain choices of arguments. We present a language design and formal theory of partial type constructors, capturing the domains of type constructors using qualified types. Our design is both simple and expressive: we support partial datatypes as first-class citizens (including as instances of parametric abstractions, such as the Haskell Functor and Monad classes), and show a simple type elaboration algorithm that avoids placing undue annotation burden on programmers. We show that our type system rejects ill-defined types and can be compiled to a semantic model based on System F. Finally, we have conducted an experimental analysis of a body of Haskell code, using a proof-of-concept implementation of our system; while there are cases where our system requires additional annotations, these cases are rarely encountered in practical Haskell code. Mark P. Jones, J. Garrett Morris, Richard A. Eisenberg |
Proc. ACM Program. Lang. | 1 |
| 2013 | Solving the snake cube puzzle in HaskellabstractAbstract We describe a concise and elegant functional program, written in Haskell, that computes solutions for a classic puzzle known as the “snake cube.” The program reflects some of the fundamental characteristics of the functional style, identifying key abstractions, and defining a small collection of operators for manipulating and working with the associated values. Well-suited for an introductory course on functional programming, this example highlights the use of visualization tools to explain and demonstrate the choices of data structures and algorithms that are used in the development. Mark P. Jones |
J. Funct. Program. | 1 |
| 2010 | Instance chains: type class programming without overlapping instancesabstractType classes have found a wide variety of uses in Haskell programs, from simple overloading of operators (such as equality or ordering) to complex invariants used to implement type-safe heterogeneous lists or limited subtyping. Unfortunately, many of the richer uses of type classes require extensions to the class system that have been incompletely described in the research literature and are not universally accepted within the Haskell community. J. Garrett Morris, Mark P. Jones |
ICFP | 2 |
| 2008 | Language and program design for functional dependenciesabstractEight years ago, functional dependencies, a concept from the theory of relational databases, were proposed as a mechanism for avoiding common problems with multiple parameter type classes in Haskell. In this context, functional dependencies give programmers a means to specify the semantics of a type class more precisely, and to obtain more accurate inferred types as a result. As time passed, however, several issues were uncovered - both in the design of a language to support functional dependencies, and in the ways that programmers use them - that led some to search for new, better alternatives. Mark P. Jones, Iavor S. Diatchki |
Haskell | 1 |
| 2008 | Experience report: playing the DSL cardabstractThis paper describes our experience using a functional language, Haskell, to build an embedded, domain-specific language (DSL) for component configuration in large-scale, real-time, embedded systems. Prior to the introduction of the DSL, engineers would describe the steps needed to configure a particular system in a handwritten XML document. In this paper, we outline the application domain, give a brief overview of the DSL that we developed, and provide concrete data to demonstrate its effectiveness. In particular, we show that the DSL has several significant benefits over the original, XML-based approach including reduced code size, increased modularity and scalability, and detection and prevention of common defects. For example, using the DSL, we were able to produce clear and intuitive descriptions of component configurations that were sometimes less than 1/30 of the size of the original XML. Mark P. Jones |
ICFP | 1 |
| 2008 | Polymorphism and page tables: systems programming from a functional programmer's perspectiveabstractWith features that include lightweight syntax, expressive type systems, and deep semantic foundations, functional languages are now being used to develop an increasingly broad range of complex, real-world applications. In the area of systems software, however, where performance and interaction with low-level aspects of hardware are central concerns, many practitioners still eschew the advantages of higher-level languages for the potentially unsafe but predictable behavior of traditional imperative languages like C. It is ironic that critical applications such as operating systems kernels, device drivers, and VMMs - where a single bug could compromise the reliability or security of a whole system - are among the least likely to benefit from the abstractions and safety guarantees of modern language designs. Mark P. Jones |
ICFP | 1 |
| 2007 | Writing systems software in a functional language: an experience reportabstractCurrent practices for developing systems software usually rely on fairly low-level programming languages and tools. As an alternative, our group has been investigating the possibility of using a high-level functional language, Haskell, for kernel and device driver construction, with the hope that it will allow us to produce more reliable and secure software. In this paper, we describe our experience developing a prototype operating system, House, in which the kernel, device drivers, and even a simple GUI, are all written in Haskell. The House system demonstrates that it is indeed possible to construct systems software in a functional language. However, it also suggests some ideas for a new Haskell dialect with features that target specific needs in this domain, including strongly typed support for low-level data structures and facilities for explicit memory accounting. Iavor S. Diatchki, Thomas Hallgren, Mark P. Jones, Rebekah Leslie, Andrew P. Tolmach |
PLOS@SOSP | 3 |
| 2006 | Strongly typed memory areas programming systems-level data structures in a functional languageabstractModern functional languages offer several attractive features to support development of reliable and secure software. However, in our efforts to use Haskell for systems programming tasks-including device driver and operating system construction-we have also encountered some significant gaps in functionality. As a result, we have been forced, either to code some non-trivial components in more traditional but unsafe languages like C or assembler, or else to adopt aspects of the foreign function interface that compromise on strong typing and type safety.In this paper, we describe how we have filled one of these gaps by extending a Haskell-like language with facilities for working directly with low-level, memory-based data structures. Using this extension, we are able to program a wide range of examples, including hardware interfaces, kernel data structures, and operating system APIs. Our design allows us to address concerns about representation, alignment, and placement (in virtual or physical address spaces) that are critical in some systems applications, but clearly beyond the scope of most existing functional languages.Our approach leverages type system features that are wellknown and widely supported in existing Haskell implementations, including kinds, multiple parameter type classes, functional dependencies, and improvement. One interesting feature is the use of a syntactic abbreviation that makes it easy to define and work with functions at the type level. Iavor S. Diatchki, Mark P. Jones |
Haskell | 2 |
| 2005 | High-level views on low-level representationsabstractThis paper explains how the high-level treatment of datatypes in functional languages—using features like constructor functions and pattern matching—can be made to coexist with bitdata. We use this term to describe the bit- level representations of data that are required in the construction of many different applications, including operating systems, device drivers, and assemblers. We explain our approach as a combination of two language extensions, each of which could potentially be adapted to any modern functional language. The first adds simple and elegant constructs for manipulating raw bitfield values, while the second provides a view-like mechanism for defining distinct new bitdata types with fine-control over the underlying representation. Our design leverages polymorphic type inference, as well as techniques for improvement of qualified types, to track both the type and the width of bitdata structures. We have implemented our extensions in a small functional language interpreter, and used it to show that our approach can handle a wide range of practical bitdata types. Iavor S. Diatchki, Mark P. Jones, Rebekah Leslie |
ICFP | 2 |
| 2005 | A principled approach to operating system construction in HaskellabstractWe describe a monadic interface to low-level hardware features that is a suitable basis for building operating systems in Haskell. The interface includes primitives for controlling memory management hardware, user-mode process execution, and low-level device I/O. The interface enforces memory safety in nearly all circumstances. Its behavior is specified in part by formal assertions written in a programming logic called P-Logic. The interface has been implemented on bare IA32 hardware using the Glasgow Haskell Compiler (GHC) runtime system. We show how a variety of simple O/S kernels can be constructed on top of the interface, including a simple separation kernel and a demonstration system in which the kernel, window system, and all device drivers are written in Haskell. Thomas Hallgren, Mark P. Jones, Rebekah Leslie, Andrew P. Tolmach |
ICFP | 2 |
| 2005 | Operating system construction in HaskellabstractDespite all the advances in programming language technology, many of today's operating systems developers and researchers are still using essentially the same languages that their predecessors were using twenty to thirty years ago. Programming language researchers have developed many new ideas during this time to increase programmer productivity and to help developers produce more reliable software. Powerful module systems and expressive type systems, for example, introduce significant software engineering benefits including more flexible construction, increased reuse, and compile-time bug detection. If these features are as good as their designers claim, why are they not attracting more interest as tools for operating systems development and prototyping? Rebekah Leslie, Mark P. Jones |
SOSP | 2 |
| 2004 | Composing fractalsabstractThis paper describes a simple but flexible family of Haskell programs for drawing pictures of fractals such as Mandelbrot and Julia sets. Its main goal is to showcase the elegance of a compositional approach to program construction, and the benefits of a clean separation between different aspects of program behavior. Aimed at readers with relatively little experience of functional programming, the paper can be used as a tutorial on functional programming, as an overview of the Mandelbrot set, or as a motivating example for studies in computability. Mark P. Jones |
J. Funct. Program. | 1 |
| 2002 | A formal specification of the Haskell 98 module systemabstractMany programming languages provide means to split large programs into smaller modules. The module system of a language specifies what constitutes a module and how modules interact.This paper presents a formal specification of the module system for the functional programming language Haskell. Although many aspects of Haskell have been subjected to formal analysis, the module system has, to date, been described only informally as part of the Haskell language report. As a result, some aspects of it are not well understood or are under-specified; this causes difficulties in reasoning about Haskell programs, and leads to practical problems such as inconsistencies between different implementations. One significant aspect of our work is that the specification is written in Haskell, which means that it can also be used as an executable test-bed, and as a starting point for Haskell implementers. Iavor S. Diatchki, Mark P. Jones, Thomas Hallgren |
Haskell | 2 |
| 2000 | Type Classes with Functional Dependencies
Mark P. Jones |
ESOP | 1 |
| 2000 | Integrating Programming, Properties, and Validation
Mark P. Jones |
MPC | 1 |
| 1997 | First-class Polymorphism with Type InferenceabstractLanguages like ML and Haskell encourage the view of values as first-class entities that can be passed as arguments or results of functions, or stored as components of data structures. The same languages offer parametric polymorphism, which allows the use of values that behave uniformly over a range of different types. But the combination of these features is not supported-- polymorphic values are not first-class. This restriction is sometimes attributed to the dependence of such languages on type inference, in contrast to more expressive, explicitly typed languages, like System F, that do support first-class polymorphism.This paper uses relationships between types and logic to develop a type system, FCP, that supports first-class polymorphism, type inference, and also first-class abstract datatypes. The immediate result is a more expressive language, but there are also long term implications for language design. Mark P. Jones |
POPL | 1 |
| 1996 | Using Parameterized Signatures to Express Modular StructureabstractModule systems are a powerful, practical tool for managing the complexity of large software systems. Previous attempts to formulate a type-theoretic foundation for modular programming have been based on existential, dependent, or manifest types. These approaches can be distinguished by their use of different quantifiers to package the operations that a module exports together with appropriate implementation types. In each case, the underlying type theory is simple and elegant, but significant and sometimes complex extensions are needed to account for features that are important in practical systems, such as separate compilation and propagation of type information between modules.This paper presents a simple type-theoretic framework for modular programming using parameterized signatures. The use of quantifiers is treated as a necessary, but independent concern. Using familiar concepts of polymorphism, the resulting module system is easy to understand and admits true separate compilation. It is also very powerful, supporting high-order, polymorphic, and first-class modules without further extension. Mark P. Jones |
POPL | 1 |
| 1995 | Monad Transformers and Modular InterpretersabstractWe show how a set of building blocks can be used to construct programming language interpreters, and present implementations of such building blocks capable of supporting many commonly known features, including simple expressions, three different function call mechanisms (call-by-name, call-by-value and lazy evaluation), references and assignment, nondeterminism, first-class continuations, and program tracing. Sheng Liang, Paul Hudak, Mark P. Jones |
POPL | 3 |
| 1995 | A System of Constructor Classes: Overloading and Implicit Higher-Order PolymorphismabstractAbstract This paper describes a flexible type system that combines overloading and higher-order polymorphism in an implicitly typed language using a system of constructor classes —a natural generalization of type classes in Haskell. We present a range of examples to demonstrate the usefulness of such a system. In particular, we show how constructor classes can be used to support the use of monads in a functional language. The underlying type system permits higher-order polymorphism but retains many of the attractive features that have made Hindley/Milner type systems so popular. In particular, there is an effective algorithm that can be used to calculate principal types without the need for explicit type or kind annotations. A prototype implementation has been developed providing, amongst other things, the first concrete implementation of monad comprehensions known to us at the time of writing. Mark P. Jones |
J. Funct. Program. | 1 |
| 1994 | Dictionary-Free Overloading by Partial Evaluation
Mark P. Jones |
PEPM | 1 |
| 1994 | A Theory of Qualified Types
Mark P. Jones |
Sci. Comput. Program. | 1 |
| 1993 | Implementing Type ClassesabstractWe describe the implementation of a type checker for the functional programming language Haskell that supports the use of type classes. This extends the type system of ML to support overloading (ad-hoc polymorphism) and can be used to implement features such as equality types and numeric overloading in a simple and general way. John Peterson, Mark P. Jones |
PLDI | 2 |
| 1992 | A Theory of Qualified Types
Mark P. Jones |
ESOP | 1 |
| 1992 | Computing with Lattices: An Application of Type ClassesabstractAbstract This paper presents a simple framework for performing calculations with the elements of (finite) lattices. A particular feature of this work is the use of type classes to enable the use of overloaded function symbols within a strongly typed language. Previous applications of type classes have been in areas that are of most interest to language implementors. This paper suggests that type classes might also be useful as a general tool in the development of clear and modular programs. Mark P. Jones |
J. Funct. Program. | 1 |