VLDB 2026 Research / reviewers in the wild / expert
Daniel P. Friedman
dblp:f/DPFriedman
· DBLP profile ↗
37ranked-venue papers
10as first author
0since 2021 · last 2016
0000-0001-9992-1675ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 26 · 5 first-authorTheory of computation · 8 · 4 first-authorDatabases, data management, data science and information retrieval · 3 · 3 first-authorHuman-computer interaction and ubiquitous computing · 3Systems, architecture and hardware · 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
9 papers |
Programming languages and type systems · 98% Concurrent programming · 2% Compilers and program optimization · 0% | |
| Theoretical computer science
2 papers |
Logic in computer science · 44% Mathematical optimization · 44% Automated reasoning and model checking · 13% |
Topics — the 24 heaviest of 24, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems
language design |
0.0 | 2 | 1995 | An Algebraic Semantics of Subobjects · OOPSLA 1995 Quasi-Static Scoping: Sharing Variable Bindings Across Multiple Lexical Scopes · POPL 1993 |
Programming languages and type systems
language semantics |
0.0 | 1 | 1995 | An Algebraic Semantics of Subobjects · OOPSLA 1995 |
Programming languages and type systems › language semantics › formal semantics
object-oriented language semantics |
0.0 | 1 | 1995 | An Algebraic Semantics of Subobjects · OOPSLA 1995 |
Programming languages and type systems › lambda calculus
variable binding |
0.0 | 1 | 1993 | Quasi-Static Scoping: Sharing Variable Bindings Across Multiple Lexical Scopes · POPL 1993 |
Programming languages and type systems › control structures
control abstraction |
0.0 | 2 | 1987 | Embedding Continuations in Procedural Objects · ACM Trans. Program. Lang. Syst. 1987 Constraining Control · POPL 1985 |
Programming languages and type systems › control operators
dynamic-wind |
0.0 | 2 | 1987 | Embedding Continuations in Procedural Objects · ACM Trans. Program. Lang. Syst. 1987 Constraining Control · POPL 1985 |
Programming languages and type systems › control operators
first-class continuations |
0.0 | 2 | 1987 | Embedding Continuations in Procedural Objects · ACM Trans. Program. Lang. Syst. 1987 Constraining Control · POPL 1985 |
Programming languages and type systems
lambda calculus |
0.0 | 1 | 1987 | A Calculus for Assignments in Higher-Order Languages · POPL 1987 |
Programming languages and type systems › language semantics › formal semantics
operational semantics |
0.0 | 1 | 1987 | A Calculus for Assignments in Higher-Order Languages · POPL 1987 |
Mathematical optimization › iterative methods
continuation method |
0.0 | 1 | 1986 | Reasoning with Continuations · LICS 1986 |
Logic in computer science
lambda calculus |
0.0 | 1 | 1986 | Reasoning with Continuations · LICS 1986 |
Programming languages and type systems
module systems |
0.0 | 1 | 1993 | Quasi-Static Scoping: Sharing Variable Bindings Across Multiple Lexical Scopes · POPL 1993 |
Programming languages and type systems › functional programming
applicative programming |
0.0 | 1 | 1980 | An Indeterminate Constructor for Applicative Programming · POPL 1980 |
Concurrent programming › concurrent processes
parallel processes |
0.0 | 1 | 1980 | An Indeterminate Constructor for Applicative Programming · POPL 1980 |
Programming languages and type systems
extensibility |
0.0 | 1 | 1987 | Embedding Continuations in Procedural Objects · ACM Trans. Program. Lang. Syst. 1987 |
Programming languages and type systems › programming paradigms
imperative languages |
0.0 | 1 | 1987 | A Calculus for Assignments in Higher-Order Languages · POPL 1987 |
Parallel and multicore computing
parallel programming models |
0.0 | 1 | 1978 | Aspects of Applicative Programming for Parallel Processing · IEEE Trans. Computers 1978 |
Programming languages and type systems
control operators |
0.0 | 1 | 1986 | Reasoning with Continuations · LICS 1986 |
Knowledge, reasoning and agents › Knowledge representation and reasoning
temporal reasoning |
0.0 | 1 | 1977 | Hendrix's Model for Simultaneous Actions and Continuous Processes: An Introduction and Implementation · Int. J. Man Mach. Stud. 1977 |
Automated reasoning and model checking
reasoning about actions |
0.0 | 1 | 1977 | Hendrix's Model for Simultaneous Actions and Continuous Processes: An Introduction and Implementation · Int. J. Man Mach. Stud. 1977 |
Programming languages and type systems
evaluation strategies |
0.0 | 1 | 1976 | CONS Should Not Evaluate its Arguments · ICALP 1976 |
Programming languages and type systems
lazy evaluation |
0.0 | 1 | 1976 | CONS Should Not Evaluate its Arguments · ICALP 1976 |
Compilers and program optimization
parallelizing compiler |
0.0 | 1 | 1978 | Aspects of Applicative Programming for Parallel Processing · IEEE Trans. Computers 1978 |
Programming languages and type systems
functional programming |
0.0 | 1 | 1976 | CONS Should Not Evaluate its Arguments · ICALP 1976 |
Methods — techniques the papers use, named apart from their topics
formal modeling · 0.0algebraic semantics · 0.0fluids · 0.0continuations · 0.0rewriting semantics · 0.0domain mechanisms · 0.0denotational semantics · 0.0suspension-based evaluation · 0.0recursion elimination · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2016 | A small embedding of logic programming with a simple complete searchabstractWe present a straightforward, call-by-value embedding of a small logic programming language with a simple complete search. We construct the entire language in 54 lines of Racket---half of which implement unification. We then layer over it, in 43 lines, a reconstruction of an existing logic programming language, miniKanren, and attest to our implementation's pedagogical value. Evidence suggests our combination of expressiveness, concision, and elegance is compelling: since microKanren's release, it has spawned over 50 embeddings in over two dozen host languages, including Go, Haskell, Prolog and Smalltalk. Jason Hemann, Daniel P. Friedman, William E. Byrd, Matthew Might |
DLS | 2 |
| 2008 | alpha-leanTAP: A Declarative Theorem Prover for First-Order Classical Logic
Joseph P. Near, William E. Byrd, Daniel P. Friedman |
ICLP | 3 |
| 2005 | Backtracking, interleaving, and terminating monad transformers: (functional pearl)abstractWe design and implement a library for adding backtracking computations to any Haskell monad. Inspired by logic programming, our library provides, in addition to the operations required by the MonadPlus interface, constructs for fair disjunctions, fair conjunctions, conditionals, pruning, and an expressive top-level interface. Implementing these additional constructs is easy in models of backtracking based on streams, but not known to be possible in continuation-based models. We show that all these additional constructs can be generically and monadically realized using a single primitive msplit. We present two implementations of the library: one using success and failure continuations; and the other using control operators for manipulating delimited continuations. Oleg Kiselyov, Chung-chieh Shan, Daniel P. Friedman, Amr Sabry |
ICFP | 3 |
| 2002 | CPS in little pieces: composing partial continuationsabstractThis paper presents a new two-stage CPS algorithm. The first stage plants trivial partial continuations via a recursive-descent traversal and the second stage is a rewrite system that transforms all nontail calls into tail calls. The algorithm combines the metaphors of the Plotkin-style CPS transformation along with reduction in the λ-calculus. Daniel P. Friedman, Amr Sabry |
J. Funct. Program. | 1 |
| 1999 | Trampolined StyleabstractA trampolined program is organized as a single loop in which computations are scheduled and their execution allowed to proceed in discrete steps. Writing programs in trampolined style supports primitives for multithreading without language support for continuations. Various forms of trampolining allow for different degrees of interaction between threads. We present two architectures based on an only mildly intrusive trampolined style. Concurrency can be supported at multiple levels of granularity by performing the trampolining transformation multiple times. Steven E. Ganz, Daniel P. Friedman, Mitchell Wand |
ICFP | 2 |
| 1998 | Synthesizing Object-Oriented and Functional Design to Promote Re-Use
Shriram Krishnamurthi, Matthias Felleisen, Daniel P. Friedman |
ECOOP | 3 |
| 1998 | Recycling ContinuationsabstractIf the continuations in functional data-structure-generating programs are made explicit and represented as records, they can be "recycled." Once they have served their purpose as temporary, intermediate structures for managing program control, the space they occupy can be reused for the structures that the programs produce as their output. To effect this immediate memory reclamation, we use a sequence of correctness-preserving program transformations, demonstrated through a series of simple examples. We then apply the transformations to general anamorphism operators, with the important consequence that all finite-output anamorphisms can now be run without any stack- or continuation-space overhead. Jonathan Sobel, Daniel P. Friedman |
ICFP | 2 |
| 1996 | Modeling Subobject-based Inheritance
Jonathan G. Rossie Jr., Daniel P. Friedman, Mitchell Wand |
ECOOP | 2 |
| 1996 | Enriching the Lambda Calculus with Contexts: Toward a Theory of Incremental Program ConstructionabstractA context in the λ-calculus is a term with some holes. Hole filling differs from β-substitution in that name capture is intended. This seemingly simple feature transcends static scope and lies at the heart of modular and object-oriented programming. Still, the name capture feature of hole filling is at odds with hygienic β-substitution. In this paper we conservatively extend the λ-calculus to incorporate the notion of contexts without jeopardizing the β-rule. We perceive contexts as source code and λ-terms as target code. Context filling is encoded as compilation operations and the enriched calculus is a theory of separate compilation and incremental program construction. Linking of separately-developed programs is done by coherent renaming of free variables.We apply our context-enriching schema to the λ-calculus extended with definitions and devise a calculus of first-class modules. We show that module linking can be modeled solely by the renaming of import and export variables. We add relinkable variable references to model virtual method references essential to object systems.The inclusion of contexts introduces parameters whose linking is based on names (symbols, identifiers, or keywords). We simulate in the context-enriched calculus other extensions of the λ-calculus with name-based programming notions such as Dami's λ-calculus with names, Aït-Kaci and Garrigue's label-selective λ-calculus, Lamping's transparent data parameters, and our quasi-static procedures. Shinn-Der Lee, Daniel P. Friedman |
ICFP | 2 |
| 1995 | An Algebraic Semantics of SubobjectsabstractExisting formalisms of inheritance are not sufficient to model the complexities of the kind of multiple inheritance exemplified in C++. Any satisfactory formalism must model the complicating effects of virtual and nonvirtual base classes as well as virtual and non-virtual methods. By abstracting the implementational notion of a subobject and formalizing subobject selection, we develop a formalism to model this combination of features. Not intended as a formal semantics of C++, the resulting model should nevertheless provide an essential level of understanding for language theorists and implementors in their dealings with C++ and related languages. 1 Introduction The style of multiple inheritance first proposed for Simula by Krogdahl[21] and later developed into the C++ multiple inheritance system by Stroustrup[35, 15] exemplifies a particular kind of inheritance in which the underlying imperative is to maintain the integrity of subobjects. Subobjects are historically an implementation... Jonathan G. Rossie Jr., Daniel P. Friedman |
OOPSLA | 2 |
| 1993 | Quasi-Static Scoping: Sharing Variable Bindings Across Multiple Lexical ScopesabstractStatic scoping embodies a strong encapsulation mechanism for hiding the details of program units. Yet, it does not allow the sharing of variable bindings (locations) across independent program units. Facilities such as module and object systems that require cross references of variables therefore must be added as special features. In this paper we present an alternative: quasi-static scoping. Quasi-static scoping is more flexible than static scoping, but has the same encapsulation mechanism. The user can control when and in what scope to resolve a quasi-static variable, i.e., to associate it with a variable binding. To demonstrate its versatility, we add quasi-static scoping to Scheme and show how to build the aforementioned facilities at the user-level. We also show that quasi-static scoping can be implemented efficiently. Shinn-Der Lee, Daniel P. Friedman |
POPL | 2 |
| 1993 | Issues in the choice of programming language for CS 1 (abstract)abstractNo abstract available. Rhys Price Jones, Doug Cooper, Daniel P. Friedman, Richard C. Holt, Peter Robinson 0001 |
SIGCSE | 3 |
| 1993 | Using SCHEME in the introductory computer science curriculum (abstract)abstractNo abstract available. Arthur M. Riehl, Daniel P. Friedman, Brian Harvey, Simon M. Kaplan, Richard M. Salter, George Springer |
SIGCSE | 2 |
| 1990 | A Syntactic Theory of Transparent Parameterization
Stanley Jefferson, Shinn-Der Lee, Daniel P. Friedman |
ESOP | 3 |
| 1990 | Towards a Facility for Lexically Scoped, Dynamic Mutual Recursion in Scheme
John V. Franco, Daniel P. Friedman |
Comput. Lang. | 2 |
| 1990 | Multi-Way Streams in Scheme
John V. Franco, Daniel P. Friedman, Steven D. Johnson |
Comput. Lang. | 2 |
| 1989 | Creating Efficient Programs by Exchanging Data for Procedures
John V. Franco, Daniel P. Friedman |
Comput. Lang. | 2 |
| 1989 | A Syntactic Theory of Sequential State
Matthias Felleisen, Daniel P. Friedman |
Theor. Comput. Sci. | 2 |
| 1987 | A Calculus for Assignments in Higher-Order LanguagesabstractImperative assignments are abstractions of recurring programming patterns in purely functional programming languages. When added to higher-order functional languages, they provide a higher-level of modularity and security but invalidate the simple substitution semantics. We show that, given an operational interpretation of a denotational semantics for such a language, it is possible to design a two-level extension of the lu-calculus. This calculus provides a location-free rewriting semantics of the language and offers new possibilities for reasoning with assignments. The upper level of the calculus factors out all the steps in a reduction sequence which must be in a linear order; the lower level allows a partial ordering of reduction steps. Matthias Felleisen, Daniel P. Friedman |
POPL | 2 |
| 1987 | Abstracting Timed Preemption with Engines
Christopher T. Haynes, Daniel P. Friedman |
Comput. Lang. | 2 |
| 1987 | A Syntactic Theory of Sequential Control
Matthias Felleisen, Daniel P. Friedman, Eugene E. Kohlbecker, Bruce F. Duba |
Theor. Comput. Sci. | 2 |
| 1987 | Embedding Continuations in Procedural ObjectsabstractContinuations, when available as first-class objects, provide a general control abstraction in programming languages. They liberate the programmer from specific control structures, increasing programming language extensibility. Such continuations may be extended by embedding them in procedural objects. This technique is first used to restore a fluid environment when a continuation object is invoked. We then consider techniques for constraining the power of continuations in the interest of security and efficiency. Domain mechanisms, which create dynamic barriers for enclosing control, are implemented using fluids. Domains are then used to implement an unwind-protect facility in the presence of first-class continuations. Finally, we present two mechanisms, wind-unwind and dynamic-wind, that generalize unwind-protect. Christopher T. Haynes, Daniel P. Friedman |
ACM Trans. Program. Lang. Syst. | 2 |
| 1986 | Reasoning with Continuations
Matthias Felleisen, Daniel P. Friedman, Eugene E. Kohlbecker, Bruce F. Duba |
LICS | 2 |
| 1986 | A Closer Look at Export and Import Statements
Matthias Felleisen, Daniel P. Friedman |
Comput. Lang. | 2 |
| 1986 | Obtaining Coroutines with Continuations
Christopher T. Haynes, Daniel P. Friedman, Mitchell Wand |
Comput. Lang. | 2 |
| 1985 | Constraining ControlabstractContinuations, when available as first-class objects, provide a general control abstraction in programming languages. They liberate the programmer from specific control structures, increasing programming language extensibility. Such continuations may be extended by embedding them in functional objects. This technique is first used to restore a fluid environment when a continuation object is invoked. We then consider techniques for constraining the power of continuations in the interest of security and efficiency. Domain mechanisms, which create dynamic barriers for enclosing control, are implemented using fluids. Domains are then used to implement an unwind-protect facility in the presence of first-class continuations. Finally, we demonstrate two mechanisms, wind-unwind and dynamic-wind, that generalize unwind-protect. Daniel P. Friedman, Christopher T. Haynes |
POPL | 1 |
| 1980 | An Indeterminate Constructor for Applicative ProgrammingabstractThis paper proposes the encapsulization and control of contending parallel processes within data structures. The advantage of embedding the contention within data is that the contention, itself, thereby becomes an object which can be handled by the program at a level above the actions of the processes themselves. This means that an indeterminate behavior, never precisely specified by the programmer or by the input, may be shared in the same way that an argument to a function is shared by every use of the corresponding parameter, an ability which is of particular importance to applicative-style programming. Daniel P. Friedman, David S. Wise |
POPL | 1 |
| 1980 | Concur: A Language for Continuous, Concurrent Processes
Richard M. Salter, Terence J. Brennan, Daniel P. Friedman |
Comput. Lang. | 3 |
| 1979 | Reference Counting Can Manage the Circular Environments of Mutual Recursion
Daniel P. Friedman, David S. Wise |
Inf. Process. Lett. | 1 |
| 1978 | Functional Combination
Daniel P. Friedman, David S. Wise |
Comput. Lang. | 1 |
| 1978 | Compiling Lambda-Expressions Using Continuations and Factorizations
Mitchell Wand, Daniel P. Friedman |
Comput. Lang. | 2 |
| 1978 | Unbounded Computational StructuresabstractAbstract The concept of suspended evaluation is used as an approach to co‐routines. Problems from the literature involving infinite data structures are solved in a LISP‐like applicative language to demonstrate that simple new semantics can enrich old and ‘friendly’ control structures. It appears that the very nature of these problems draws control structure and data structure together, so that issues of style may be studied at once for both. Daniel P. Friedman, David S. Wise |
Softw. Pract. Exp. | 1 |
| 1978 | Aspects of Applicative Programming for Parallel ProcessingabstractEarly results of a project on compiling stylized recursion into stackless iterative code are reviewed as they apply to a target environment with multiprocessing. Parallelism is possible in executing the compiled image of argument evaluation (collateral argument evaluation of Algol 68), of data structure construction when suspensions are used, and of functional combinations. The last facility provides generally, concise expression for all operations performed in Lisp by mapping functions and in APL by typed operators; there are other uses as well. Daniel P. Friedman, David S. Wise |
IEEE Trans. Computers | 1 |
| 1977 | Hendrix's Model for Simultaneous Actions and Continuous Processes: An Introduction and Implementation
John D. Lowrance, Daniel P. Friedman |
Int. J. Man Mach. Stud. | 2 |
| 1976 | CONS Should Not Evaluate its Arguments
Daniel P. Friedman, David S. Wise |
ICALP | 1 |
| 1976 | Output Driven Interpretation of Recursive Programs, or Writing Creates and Destroys Data Structures
Daniel P. Friedman, David S. Wise |
Inf. Process. Lett. | 1 |
| 1976 | Garbage Collecting a Heap Which Includes a Scatter Table
Daniel P. Friedman, David S. Wise |
Inf. Process. Lett. | 1 |