VLDB 2026 Research / reviewers in the wild / expert
Don Syme
dblp:22/2801 · also Donald Robert Syme
· DBLP profile ↗
15ranked-venue papers
4as 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 · 11 · 3 first-authorSystems, architecture and hardware · 2Artificial intelligence and machine learning · 1 · 1 first-authorHuman-computer interaction and ubiquitous computing · 1Theory 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
4 papers |
Programming languages and type systems · 78% Compilers and program optimization · 14% Runtime systems and virtual machines · 7% | |
| Interdisciplinary, comprehensive, and emerging computing
1 paper |
Computing education · 100% | |
| Human-computer interaction and pervasive computing
1 paper |
User interface design and tools · 100% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Electronic design automation · 100% | |
| Artificial intelligence
1 paper |
Probabilistic and Bayesian machine learning · 100% | |
| Databases, data mining, and information retrieval
1 paper |
Data integration and cleaning · 100% |
Topics — the 16 heaviest of 19, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Computing education
programming education |
0.2 | 1 | 2016 | A Live, Multiple-Representation Probabilistic Programming Environment for Novices · CHI 2016 |
User interface design and tools
programming environments |
0.2 | 1 | 2016 | A Live, Multiple-Representation Probabilistic Programming Environment for Novices · CHI 2016 |
Programming languages and type systems › type systems › polymorphism
generics |
0.1 | 2 | 2004 | Formalization of generics for the .NET common language runtime · POPL 2004 Design and Implementation of Generics for the .NET Common Language Runtime · PLDI 2001 |
Machine learning › Probabilistic and Bayesian machine learning
probabilistic programming |
0.1 | 1 | 2016 | A Live, Multiple-Representation Probabilistic Programming Environment for Novices · CHI 2016 |
Compilers and program optimization › intermediate representation
intermediate language |
0.1 | 2 | 2001 | Typing a multi-language intermediate code · POPL 2001 Design and Implementation of Generics for the .NET Common Language Runtime · PLDI 2001 |
Electronic design automation › hardware verification and test
formal verification |
0.1 | 1 | 2005 | An industrially effective environment for formal hardware verification · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 2005 |
Electronic design automation › hardware verification and test
hardware verification |
0.1 | 1 | 2005 | An industrially effective environment for formal hardware verification · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 2005 |
Electronic design automation › hardware verification and test › formal verification
symbolic trajectory evaluation |
0.1 | 1 | 2005 | An industrially effective environment for formal hardware verification · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 2005 |
Programming languages and type systems
type theory |
0.0 | 1 | 2004 | Formalization of generics for the .NET common language runtime · POPL 2004 |
Compilers and program optimization
intermediate representation |
0.0 | 1 | 2001 | Typing a multi-language intermediate code · POPL 2001 |
Programming languages and type systems › type systems › polymorphism
parametric polymorphism |
0.0 | 1 | 2001 | Design and Implementation of Generics for the .NET Common Language Runtime · PLDI 2001 |
Programming languages and type systems › language implementation
typed intermediate language |
0.0 | 1 | 2001 | Typing a multi-language intermediate code · POPL 2001 |
Programming languages and type systems › type systems
type soundness |
0.0 | 1 | 2001 | Typing a multi-language intermediate code · POPL 2001 |
Programming languages and type systems
type systems |
0.0 | 1 | 2001 | Typing a multi-language intermediate code · POPL 2001 |
Electronic design automation › hardware verification and test › formal verification
theorem proving |
0.0 | 1 | 2005 | An industrially effective environment for formal hardware verification · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 2005 |
Programming languages and type systems › interoperability
language interoperability |
0.0 | 1 | 2001 | Design and Implementation of Generics for the .NET Common Language Runtime · PLDI 2001 |
Methods — techniques the papers use, named apart from their topics
controlled experiment · 0.8type soundness proof · 0.5model checking · 0.1higher-order logic theorem proving · 0.1theorem proving · 0.0formal semantics · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | The early history of F#abstractThis paper describes the genesis and early history of the F# programming language. I start with the origins of strongly-typed functional programming (FP) in the 1970s, 80s and 90s. During the same period, Microsoft was founded and grew to dominate the software industry. In 1997, as a response to Java, Microsoft initiated internal projects which eventually became the .NET programming framework and the C# language. From 1997 the worlds of academic functional programming and industry combined at Microsoft Research, Cambridge. The researchers engaged with the company through Project 7, the initial effort to bring multiple languages to .NET, leading to the initiation of .NET Generics in 1998 and F# in 2002. F# was one of several responses by advocates of strongly-typed functional programming to the "object-oriented tidal wave" of the mid-1990s. The development of the core features of F# 1.0 happened from 2004-2007, and I describe the decision-making process that led to the "productization" of F# by Microsoft in 2007-10 and the release of F# 2.0. The origins of F#'s characteristic features are covered: object programming, quotations, statically resolved type parameters, active patterns, computation expressions, async, units-of-measure and type providers. I describe key developments in F# since 2010, including F# 3.0-4.5, and its evolution as an open source, cross-platform language with multiple delivery channels. I conclude by examining some uses of F# and the influence F# has had on other languages so far. Don Syme |
Proc. ACM Program. Lang. | 1 |
| 2016 | A Live, Multiple-Representation Probabilistic Programming Environment for NovicesabstractWe present a live, multiple-representation novice environment for probabilistic programming based on the Infer.NET language. When compared to a text-only editor in a controlled experiment on 16 participants, our system showed a significant reduction in keystrokes during introductory probabilistic programming exercises, and subsequently, a significant improvement in program description and debugging tasks as measured by task time, keystrokes and deletions. Maria I. Gorinova 0001, Advait Sarkar, Alan F. Blackwell, Don Syme |
CHI | 4 |
| 2016 | Types from data: making structured data first-class citizens in F#abstractMost modern applications interact with external services and access data in structured formats such as XML, JSON and CSV. Static type systems do not understand such formats, often making data access more cumbersome. Should we give up and leave the messy world of external data to dynamic typing and runtime checks? Of course, not! We present F# Data, a library that integrates external structured data into F#. As most real-world data does not come with an explicit schema, we develop a shape inference algorithm that infers a shape from representative sample documents. We then integrate the inferred shape into the F# type system using type providers. We formalize the process and prove a relative type soundness theorem. Our library significantly reduces the amount of data access code and it provides additional safety guarantees when contrasted with the widely used weakly typed techniques. Tomas Petricek 0001, Gustavo Guerra, Don Syme |
PLDI | 3 |
| 2014 | The F# Computation Expression Zoo
Tomas Petricek 0001, Don Syme |
PADL | 2 |
| 2011 | Extending monads with pattern matchingabstractSequencing of effectful computations can be neatly captured using monads and elegantly written using do notation. In practice such monads often allow additional ways of composing computations, which have to be written explicitly using combinators. Tomas Petricek 0001, Alan Mycroft, Don Syme |
Haskell | 3 |
| 2011 | Joinads: A Retargetable Control-Flow Construct for Reactive, Parallel and Concurrent Programming
Tomas Petricek 0001, Don Syme |
PADL | 2 |
| 2011 | The F# Asynchronous Programming Model
Don Syme, Tomas Petricek 0001, Dmitry Lomov |
PADL | 1 |
| 2010 | Collecting hollywood's garbage: avoiding space-leaks in composite eventsabstractThe reactive programming model is largely different to what we're used to as we don't have full control over the application's control flow. If we mix the declarative and imperative programming style, which is usual in the ML family of languages, the situation is even more complex. It becomes easy to introduce patterns where the usual garbage collector for objects cannot automatically dispose all components that we intuitively consider garbage. Tomas Petricek 0001, Don Syme |
ISMM | 2 |
| 2007 | Extensible pattern matching via a lightweight language extensionabstractPattern matching of algebraic data types (ADTs) is a standard feature in typed functional programming languages, but it is well known that it interacts poorly with abstraction. While several partial solutions to this problem have been proposed, few have been implemented or used. This paper describes an extension to the .NET language F# called active patterns, which supports pattern matching over abstract representations of generic heterogeneous data such as XML and term structures, including where these are represented via object models in other .NET languages. Our design is the first to incorporate both ad hoc pattern matching functions for partial decompositions and "views" for total decompositions, and yet remains a simple and lightweight extension. We give a description of the language extension along with numerous motivating examples. Finally we describe how this feature would interact with other reasonable and related language extensions: existential types quantified at data discrimination tags, GADTs, and monadic generalizations of pattern matching. Don Syme, Gregory Neverov, James Margetson |
ICFP | 1 |
| 2005 | An industrially effective environment for formal hardware verificationabstractThe Forte formal verification environment for datapath-dominated hardware is described. Forte has proven to be effective in large-scale industrial trials and combines an efficient linear-time logic model-checking algorithm, namely the symbolic trajectory evaluation (STE), with lightweight theorem proving in higher-order logic. These are tightly integrated in a general-purpose functional programming language, which both allows the system to be easily customized and at the same time serves as a specification language. The design philosophy behind Forte is presented and the elements of the verification methodology that make it effective in practice are also described. Carl-Johan H. Seger, Robert B. Jones, John W. O'Leary, Tom Melham, Mark D. Aagaard, Clark W. Barrett, Don Syme |
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. | 7 |
| 2004 | Formalization of generics for the .NET common language runtimeabstractWe present a formalization of the implementation of generics in the .NET Common Language Runtime (CLR), focusing on two novel aspectsof the implementation: mixed specialization and sharing, and efficient support for run-time types. Some crucial constructs used in the implementation are dictionaries and run-time type representations. We formalize these aspects type-theoretically in a way that corresponds in spirit to the implementation techniques used in practice. Both the techniques and the formalization also help us understand the range of possible implementation techniques for other languages, e.g., ML, especially when additional source language constructs such as run-time types are supported. A useful by-product of this study is a type system for a subset of the polymorphic IL proposed for the .NET CLR. Dachuan Yu, Andrew Kennedy, Don Syme |
POPL | 3 |
| 2004 | Transposing F to C#: expressivity of parametric polymorphism in an object-oriented languageabstractAbstract We present a type‐preserving translation of System F (the polymorphic lambda calculus) into a forthcoming revision of the C♯ programming language supporting parameterized classes and polymorphic methods. The forthcoming revision of Java in JDK 1.5 also makes a suitable target. We formalize the translation using a subset of C♯ similar to Featherweight Java. We prove that the translation is fully type‐preserving and that it preserves behaviour via the novel use of environment‐style semantics for System F. We observe that whilst parameterized classes alone are sufficient to encode the parameterized datatypes and let‐polymorphism of languages such as ML and Haskell, it is the presence of dynamic dispatch for polymorphic methods that supports the encoding of the ‘first‐class polymorphism’ found in System F and recent extensions to ML and Haskell. Copyright © 2004 John Wiley & Sons, Ltd. Andrew Kennedy, Don Syme |
Concurr. Pract. Exp. | 2 |
| 2002 | Automating Type Soundness Proofs via Decision Procedures and Guided Reductions
Don Syme, Andrew D. Gordon 0001 |
LPAR | 1 |
| 2001 | Design and Implementation of Generics for the .NET Common Language RuntimeabstractThe Microsoft.NET Common Language Runtime provides a shared type system, intermediate language and dynamic execution environment for the implementation and inter-operation of multiple source languages. In this paper we extend it with direct support for parametric polymorphism (also known as generics), describing the design through examples written in an extended version of the C# programming language, and explaining aspects of implementation by reference to a prototype extension to the runtime. Andrew Kennedy, Don Syme |
PLDI | 2 |
| 2001 | Typing a multi-language intermediate codeabstractThe Microsoft .NET Framework is a new computing architecture designed to support a variety of distributed applications and web-based services. .NET software components are typically distributed in an object-oriented intermediate language, Microsoft IL, executed by the Microsoft Common Language Runtime. To allow convenient multi-language working, IL supports a wide variety of high-level language constructs, including class-based objects, inheritance, garbage collection, and a security mechanism based on type safe execution.This paper precisely describes the type system for a substantial fragment of IL that includes several novel features: certain objects may be allocated either on the heap or on the stack; those on the stack may be boxed onto the heap, and those on the heap may be unboxed onto the stack; methods may receive arguments and return results via typed pointers, which can reference both the stack and the heap, including the interiors of objects on the heap. We present a formal semantics for the fragment. Our typing rules determine well-typed IL instruction sequences that can be assembled and executed. Of particular interest are rules to ensure no pointer into the stack outlives its target. Our main theorem asserts type safety, that well-typed programs in our IL fragment do not lead to untrapped execution errors.Our main theorem does not directly apply to the product. Still, the formal system of this paper is an abstraction of informal and executable specifications we wrote for the full product during its development. Our informal specification became the basis of the product team's working specification of type-checking. The process of writing this specification, deploying the executable specification as a test oracle, and applying theorem proving techniques, helped us identify several security critical bugs during development. Andrew D. Gordon 0001, Don Syme |
POPL | 2 |