Michael Sperber

dblp:s/MichaelSperber · DBLP profile ↗
← Back
16ranked-venue papers
10as first author
1since 2021 · last 2024
0000-0002-5280-9632ORCID · verified

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

Software engineering, systems software and programming languages · 16 · 10 first-author · 1 since 2021

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 · 50% Compilers and program optimization · 47% Runtime systems and virtual machines · 2%
Theoretical computer science
1 paper
Logic in computer science · 100%

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

TopicWeightPapersLastEvidence papers
Compilers and program optimization
partial evaluation
0.132000
Generation of LR parsers by partial evaluation · ACM Trans. Program. Lang. Syst. 2000
Two for the Price of One: Composing Partial Evaluation and Compilation · PLDI 1997
Realistic Compilation by Partial Evaluation · PLDI 1996
Programming languages and type systems › type systems › polymorphism
qualified types
0.012002
Functional logic overloading · POPL 2002
Programming languages and type systems › type systems › polymorphism
type classes
0.012002
Functional logic overloading · POPL 2002
Programming languages and type systems
type inference
0.012002
Functional logic overloading · POPL 2002
Compilers and program optimization › parsing
parser generation
0.012000
Generation of LR parsers by partial evaluation · ACM Trans. Program. Lang. Syst. 2000
Compilers and program optimization › compiler construction
compiler generation
0.011997
Two for the Price of One: Composing Partial Evaluation and Compilation · PLDI 1997
Runtime systems and virtual machines › dynamic compilation
run-time code generation
0.011997
Two for the Price of One: Composing Partial Evaluation and Compilation · PLDI 1997

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

type inference · 0.1functional logic programming · 0.1error recovery · 0.0attribute evaluation · 0.0LR(k) parsing · 0.0fusion · 0.0deforestation · 0.0semantics-directed compiler generation · 0.0offline partial evaluation · 0.0
YearPublicationVenuePosition
2024 A review for the Journal of Functional Programming of Sandy Maguire, Algebra-Driven Design (Leanpub, 2020)
abstract
ContextCombinator libraries have been well studied in countless papers.Indeed, as Peyton Jones, Eber, and Seward wrote in 2000, At this point, any red-blooded functional programmer should start to foam at the mouth, yelling "build a combinator library."(Peyton Jones et al., 2000)
Michael Sperber
J. Funct. Program.1
2020 Review of "Functional and Reactive Domain Modeling" by Debasish Ghosh, Manning, 2017, ISBN 978-1-617-29224-8
Michael Sperber
J. Funct. Program.1
2020 Evolution of Emacs Lisp
abstract
While Emacs proponents largely agree that it is the world’s greatest text editor, it is almost as much a Lisp machine disguised as an editor. Indeed, one of its chief appeals is that it is programmable via its own programming language. Emacs Lisp is a Lisp in the classic tradition. In this article, we present the history of this language over its more than 30 years of evolution. Its core has remained remarkably stable since its inception in 1985, in large part to preserve compatibility with the many third-party packages providing a multitude of extensions. Still, Emacs Lisp has evolved and continues to do so. Important aspects of Emacs Lisp have been shaped by concrete requirements of the editor it supports as well as implementation constraints. These requirements led to the choice of a Lisp dialect as Emacs’s language in the first place, specifically its simplicity and dynamic nature: Loading additional Emacs packages or changing the ones in place occurs frequently, and having to restart the editor in order to re-compile or re-link the code would be unacceptable. Fulfilling this requirement in a more static language would have been difficult at best. One of Lisp’s chief characteristics is its malleability through its uniform syntax and the use of macros. This has allowed the language to evolve much more rapidly and substantively than the evolution of its core would suggest, by letting Emacs packages provide new surface syntax alongside new functions. In particular, Emacs Lisp can be customized to look much like Common Lisp, and additional packages provide multiple-dispatch object systems, legible regular expressions, programmable pattern-matching constructs, generalized variables, and more. Still, the core has also evolved, albeit slowly. Most notably, it acquired support for lexical scoping. The timeline of Emacs Lisp development is closely tied to the projects and people who have shaped it over the years: We document Emacs Lisp history through its predecessors, Mocklisp and MacLisp, its early development up to the “Emacs schism” and the fork of Lucid Emacs, the development of XEmacs, and the subsequent rennaissance of Emacs development.
Stefan Monnier, Michael Sperber
Proc. ACM Program. Lang.2
2015 CUFP'13 scribe's report
abstract
The Commercial Users of Functional Programming workshop (CUFP) is an annual workshop held in association with the International Conference on Functional Programming (ICFP). The aim of the CUFP workshops is to publicize the use of functional programming in commercial ventures. Its motto is “functional programming as a means, not an end.
Marius Eriksen, Michael Sperber, Anil Madhavapeddy
J. Funct. Program.2
2014 Systematic Program Design: From Clarity to Efficiency, by Yanhong Annie Liu, Cambridge University Press, 2013, ISBN: 978-1-107-03660-4
Michael Sperber
J. Funct. Program.1
2014 Special Issue on Run-Time Systems and Target Platforms for Functional Languages: Editorial
abstract
Compiling functional languages to the existing variety of platforms calls for sophisticated implementations of run-time systems. This special issue focuses on this often-neglected aspect. We volunteered to compile this special issue in 2012 and immediately started soliciting papers. The original call for papers covered native-code platforms as well as run-time systems originally designed for non-functional languages such as the Java Virtual Machine or the .NET Common Language Runtime.
Michael Sperber, Lennart Augustsson
J. Funct. Program.1
2013 Commercial users of functional programming workshop report
abstract
Commercial Users of Functional Programming (CUFP) is an annual workshop that is aimed at the community of software developers who use functional programming in real-world settings. This scribe report covers the talks that were delivered at the 2012 workshop, which was held in association with International Conference on Functional Programming (ICFP) in Copenhagen, Denmark. The goal of the report is to give the reader a sense of what went on, rather than to reproduce the full details of the talks. Videos and slides from all the talks are available online at http://cufp.org.
Michael Sperber, Anil Madhavapeddy
J. Funct. Program.1
2010 Experience report: growing programming languages for beginning students
abstract
A student learning how to program learns best when the programming language and programming environment cater to her specific needs. These needs are different from the requirements of a professional programmer. Consequently, the design of teaching languages poses challenges different from the design of professional languages. Using a functional language by itself gives advantages over more popular, professional languages, but fully exploiting these advantages requires careful adaptation to the needs of the students' as-is, these languages do not support the students nearly as well as they could. This paper describes our experience adopting the didactic approach of How to Design Programs, focussing on the design process for our own set of teaching languages. We have observed students as they try to program as part of our introductory course, and used these observations to significantly improve the design of these languages. This paper describes the changes we have made, and the journey we took to get there.
Marcus Crestani, Michael Sperber
ICFP2
2002 Final shift for call/cc: : direct implementation of shift and reset
abstract
We present a direct implementation of the shift and reset control operators in the SFE system. The new implementation improves upon the traditional technique of simulating shift and reset via callcc. Typical applications of these operators exhibit space savings and a significant overall performance gain. Our technique is based upon the popular incremental stack/heap strategy for representing continuations. We present implementation details as well as some benchmark measurements for typical applications.
Martin Gasbichler, Michael Sperber
ICFP2
2002 Functional logic overloading
abstract
Functional logic overloading is a novel approach to user-defined overloading that extends Haskell's concept of type classes in significant ways. Whereas type classes are conceptually predicates on types in standard Haskell, they are type functions in our approach. Thus, we can base type inference on the evaluation of functional logic programs. Functional logic programming provides a solid theoretical foundation for type functions and, at the same time, allows for programmable overloading resolution strategies by choosing different evaluation strategies for functional logic programs. Type inference with type functions is an instance of type inference with constrained types, where the underlying constraint system is defined by a functional logic program. We have designed a variant of Haskell which supports our approach to overloading, and implemented a prototype front-end for the language.
Matthias Neubauer, Peter Thiemann 0001, Martin Gasbichler, Michael Sperber
POPL4
2001 Down with Emacs Lisp: Dynamic Scope Analysis
abstract
It is possible to translate code written in Emacs Lisp or another Lisp dialect which uses dynamic scoping to a more modern programming language with lexical scoping while largely preserving structure and readability of the code. The biggest obstacle to such an idiomatic translation from Emacs Lisp is the translation of dynamic binding into suitable instances of lexical binding: Many binding constructs in real programs in fact exhibit identical behavior under both dynamic and lexical binding. An idiomatic translation needs to detect as many of these binding constructs as possible and convert them into lexical binding constructs in the target language to achieve readability and efficiency of the target code. The basic prerequisite for such an idiomatic translation is thus a dynamic scope analysis which associates variable occurrences with binding constructs. We present such an analysis. It is an application of the Nielson/Nielson framework for flow analysis to a semantics for dynamic binding akin to Moreau's. Its implementation handles a substantial portion of Emacs Lisp, has been applied to realistic Emacs Lisp code, and is highly accurate and reasonably efficient in practice.
Matthias Neubauer, Michael Sperber
ICFP2
2001 Developing a Stage Lighting System from Scratch
abstract
Lula is a system for computer-assisted stage lighting design and control. Whereas other systems for the same purpose are usually the results of long chains of incremental improvements of historic concepts, Lula represents a complete redesign. Whereas other systems focus on control aspects of lighting, Lula focuses on design and generates control information from it. This approach gives significantly more flexibility to the lighting designer and shortens the design process itself. Lula's design and implementation draw from a number of disciplines in advanced programming. It is written in Scheme and runs atop PLT Scheme, and benefits from its high-level GUI library. Lula uses an algebraic model for lighting looks based on just three combinators. It employs Functional Reactive Programming for all dynamic aspects of lighting, and is programmable via a functional reactive domain-specific language. Lula is an actual product and has users who have neither interest in nor knowledge of functional programming.
Michael Sperber
ICFP1
2000 Generation of LR parsers by partial evaluation
abstract
The combination of modern programming languages and partial evaluation yields new approaches to old problems. In particular, the combination of functional programming and partial evaluation can turn a general parser into a parser generator. We use an inherently functional approach to implement general LR( k ) parsers and specialize them with respect to the input grammars using offline partial evaluation. The functional specification of LR parsing yields a concise implementation of the algorithms themselves. Furthermore, we demonstrate the elegance of the functional approach by incorporating on-the-fly attribute evaluation for S-attributed grammars and two schemes for error recovery, which lend themselves to natural and elegant implementation. The parser require only minor changes to achieve good specialization results. The generated parsers have production quality and match those produced by traditional parser generators in sped and compactness
Michael Sperber, Peter Thiemann 0001
ACM Trans. Program. Lang. Syst.1
1997 Two for the Price of One: Composing Partial Evaluation and Compilation
abstract
One of the flagship applications of partial evaluation is compilation and compiler generation. However, partial evaluation is usually expressed as a source-to-source transformation for high-level languages, whereas realistic compilers produce object code.We close this gap by composing a partial evaluator with a compiler by automatic means. Our work is a successful application of several meta-computation techniques to build the system, both in theory and in practice. The composition is an application of deforestation or fusion.The result is a run-time code generation system built from existing components. Its applications are numerous. For example, it allows the language designer to perform interpreter-based experiments with a source-to-source version of the partial evaluator before building a realistic compiler which generates object code automatically.
Michael Sperber, Peter Thiemann 0001
PLDI1
1996 Realistic Compilation by Partial Evaluation
abstract
Two key steps in the compilation of strict functional languages are the conversion of higher-order functions to data structures (closures) and the transformation to tail-recursive style. We show how to perform both steps at once by applying first-order offline partial evaluation to a suitable interpreter. The resulting code is easy to transliterate to low-level C or native code. We have implemented the compilation to C; it yields a performance comparable to that of other modern Scheme-to-C compilers. In addition, we have integrated various optimizations such as constant propagation, higher-order removal, and arity raising simply by modifying the underlying interpreter. Purely first-order methods suffice to achieve the transformations. Our approach is an instance of semantics-directed compiler generation.
Michael Sperber, Peter Thiemann 0001
PLDI1
1995 The Essence of LR Parsing
abstract
Partial evaluation can turn a general parser into a parser generator.The generated parsers surpass those produced by traditional parser generators in speed and compactness.We use an inherently functional approach to implement general LR(k) parsers and specialize them using the partial evaluator Similix.The functional implementation of LR parsing allows for concise implementation of the algorithms themselves and requires only straightforward changes to achieve good specialization results.In contrast, a traditional, stack-based implementation of a general LR parser requires significant structural changes to make it amenable to satisfactory specialization.
Michael Sperber, Peter Thiemann 0001
PEPM1