Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Daniel P. Friedman is active.

Publication


Featured researches published by Daniel P. Friedman.


Sigplan Notices | 1998

Revised 5 report on the algorithmic language scheme

Norman I. Adams; D. H. Bartley; G. Brooks; R. K. Dybvig; Daniel P. Friedman; R. Halstead; C. Hanson; Christopher T. Haynes; Eugene E. Kohlbecker; D. Oxley; K. M. Pitman; G. J. Rozas; Guy L. Steele; Gerald Jay Sussman; Mitchell Wand; H. Abelson

The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele, Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme.


international conference on functional programming | 1986

Hygienic macro expansion

Eugene E. Kohlbecker; Daniel P. Friedman; Matthias Felleisen; Bruce F. Duba

Macro expansion in current Lisp systems is naive with respect to block structure. Every macro function can cause the capture of free user identifiers and thus corrupt intended bindings. We propose a change to the expansion algorithm so that macros will only violate the binding discipline when it is explicitly intended.


ACM Sigplan Lisp Pointers | 1991

Revised 4 report on the algorithmic language scheme

H. Abelson; R. K. Dybvig; Christopher T. Haynes; G. J. Rozas; Norman I. Adams; Daniel P. Friedman; Eugene E. Kohlbecker; Guy L. Steele; D. H. Bartley; R. Halstead; D. Oxley; Gerald Jay Sussman; G. Brooks; C. Hanson; K. M. Pitman; Mitchell Wand; William D. Clinger; Jonathan Rees

The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme.


Theoretical Computer Science | 1987

A syntactic theory of sequential control

Matthias Felleisen; Daniel P. Friedman; Eugene E. Kohlbecker; Bruce F. Duba

Abstract Sequential control operators like J and call/cc are often found in implementations of the λ-calculus as a programming language. Their semantics is always defined by the evaluation function of an abstract machine. We show that, given such a machine semantics, one can derive an algebraic extension of the λ υ -calculus. The extended calculus satisfies the diamond property and contains a Church-Rosser subcalculus. This underscores that the interpretation of control operators is to a certain degree independent of a specific evaluation strategy. We also prove a standardization theorem and use it to investigate the correspondence between the machine and the calculus. Together, the calculus and the rewriting machine form a syntactic theory of control, which provides a natural basis for reasoning about programs with nonfunctional control operators.


Higher-order and Symbolic Computation \/ Lisp and Symbolic Computation | 1998

Revised Report on the Algorithmic Language Scheme

Harold Abelson; R. K. Dybvig; Christopher T. Haynes; G. J. Rozas; Norman I. Adams; Daniel P. Friedman; Eugene E. Kohlbecker; Guy L. Steele; D. H. Bartley; R. Halstead; D. Oxley; Gerald Jay Sussman; G. Brooks; C. Hanson; K. M. Pitman; Mitchell Wand

The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele, Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme.The introduction offers a brief history of the language and of the report.The first three chapters present the fundamental ideas of the language and describe the notational conventions used for describing the language and for writing programs in the language.Sections 5 and 6 describe the syntax and semantics of expressions, programs, and definitions.Section 7 describes Schemes built-in procedures, which include all of the languages data manipulation and input/output primitives.Section 8 provides a formal syntax for Scheme written in extended BNF, along with a formal denotational semantics. An example of the use of the language follows the formal syntax and semantics.The report concludes with a list of references and an alphabetic index and is followed by a short list of clarifications and corrections.


international conference on functional programming | 1984

Reification: Reflection without metaphysics

Daniel P. Friedman; Mitchell Wand

We consider how the data structures of an interpreter may be made available to the program it is running, and how the program may alter its interpreters structures. We refer to these processes as reification and reflection. We show how these processes may be considered as an extension of the fexpr concept in which not only the form and the environment, but also the continuation, are made available to the body of the procedure. We show how such a construct can be used to effectively add an unlimited variety of “special forms” to a very small base language. We consider some trade-offs in how interpreter objects are reified. Our version of this construct is similar to one in 3-Lisp [Smith 82, 84], but is independent of the rest of 3-Lisp. In particular, it does not rely on the notion of a tower of interpreters.


european conference on object oriented programming | 1998

Synthesizing Object-Oriented and Functional Design to Promote Re-Use

Shriram Krishnamurthi; Matthias Felleisen; Daniel P. Friedman

Many problems require recursively specified types of data and a collection of tools that operate on those data. Over time, these problems evolve so that the programmer must extend the toolkit or extend the types and adjust the existing tools accordingly. Ideally, this should be done without modifying existing code. Unfortunately, the prevailing program design strategies do not support both forms of extensibility: functional programming accommodates the addition of tools, while object-oriented programming supports either adding new tools or extending the data set, but not both. In this paper, we present a composite design pattern that synthesizes the best of both approaches and in the process resolves the tension between the two design strategies. We also show how this protocol suggests a new set of linguistic facilities for languages that support class systems.


international conference on functional programming | 1986

The mystery of the tower revealed: a non-reflective description of the reflective tower

Mitchell Wand; Daniel P. Friedman

In an important series of papers [8, 9], Brian Smith has discussed the nature of programs that know about their text and the context in which they are executed. He called this kind of knowledgereflection. Smith proposed a programming language, called 3-LISP, which embodied such self-knowledge in the domain of metacircular interpreters. Every 3-LISP program is interpreted by a metacircular interpreter, also written in 3-LISP. This gives rise to a picture of an infinite tower of metacircular interpreters, each being interpreted by the one above it. Such a metaphor poses a serious challenge for conventional modes of understanding of programming languages. In our earlier work on reflection [4], we showed how a useful species of reflection could be modeled without the use of towers. In this paper, we give a semantic account of the reflective tower. This account is self-contained in the sense that it does not employ reflection to explain reflection.


Computer Languages | 1986

Obtaining coroutines with continuations

Christopher T. Haynes; Daniel P. Friedman; Mitchell Wand

Abstract Continuations, when made available to the programmer as first class objects, provide a general control abstraction for sequential computation. The power of first class continuations is demonstrated by implementing a variety of coroutine mechanisms using only continuations and functional abstraction. The importance of general abstraction mechanisms such as continuations is discussed.


international conference on functional programming | 2005

Backtracking, interleaving, and terminating monad transformers: (functional pearl)

Oleg Kiselyov; Chung-chieh Shan; Daniel P. Friedman; Amr Sabry

We 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.

Collaboration


Dive into the Daniel P. Friedman's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

David S. Wise

Indiana University Bloomington

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Christopher T. Haynes

Indiana University Bloomington

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Bruce F. Duba

Indiana University Bloomington

View shared research outputs
Top Co-Authors

Avatar

John V. Franco

University of Cincinnati

View shared research outputs
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge