Pure, Declarative, and Constructive Arithmetic Relations (Declarative Pearl) ⋆ (2009)
Oleg Kiselyov, William E. Byrd, Daniel P. Friedman, Chung-chieh Shan
Abstract. We present decidable logic programs for addition, multiplication, division with remainder, exponentiation, and logarithm with remainder over the unbounded domain of natural numbers. Our...
Abstract αKanren A Fresh Name in Nominal Logic Programming (2009)
William E. Byrd, Daniel P. Friedman
We present αKanren, an embedding of nominal logic programming in Scheme. αKanren is inspired by αProlog and MLSOS, and allows programmers to easily write interpreters, type inferencers, and other...
Aspect-Oriented Programming is Quantification and Obliviousness Abstract (2009)
Robert E. Filman, Daniel P. Friedman
This paper proposes that the distinguishing characteristic of Aspect-Oriented Programming (AOP) systems is that they allow programming by making quantified programmatic assertions over programs...
Pure, Declarative, and Constructive Arithmetic Relations (Declarative Pearl) ⋆ (2008)
Oleg Kiselyov, William E. Byrd, Daniel P. Friedman, Chung-chieh Shan
Abstract. We present decidable logic programs for addition, multiplication, division with remainder, exponentiation, and logarithm with remainder over the unbounded domain of natural numbers. Our...
Abstract αKanren A Fresh Name in Nominal Logic Programming (2008)
William E. Byrd, Daniel P. Friedman
We present αKanren, an embedding of nominal logic programming in Scheme. αKanren is inspired by αProlog and MLSOS, and allows programmers to easily write interpreters, type inferencers, and other...
[8] Benjamin C. Pierce. Advanced Topics in Types and Programming Languages. (2008)
Programming Languages, The Mit Press, Daniel P. Friedman, Matthias Felleisen, The Little, ...
[12] Paul R. Wilson. Uniprocessor garbage collection techniques. In Proc.
Organization: Applications of Continuations (2008)
The lecture is in three parts. In the first part we define, primarily by example, the key terms. These are conventional procedures, escape procedures and continuations. The primitive notions of...
Characterizing the Paralation Model using Dynamic Assignment (2008)
Eric T. Freeman, Daniel P. Friedman
Abstract. Collection-oriented languages provide high-level constructs for describing computations over collections. These languages are becoming increasingly popular with the advent of massively...
Abstract Expansion-Passing Style: A General Macro Mechanism* (2008)
R. Kent Dybvig, Daniel P. Friedman, Christopher T. Haynes
The traditional Lisp macro expansion facility inhibits several important forms of expansion control. These include selective expansion of subexpressions, expansion of subexpressions using modified...
Multi-way Streams in Scheme (2007)
John Franco, Daniel P. Friedman, Steven D. Johnson
We present a mechanism for the maintenance of streams based on the Scheme facility of call-with-current-continuation or call/cc. The mechanism supports stream sharing and has overhead cost which is...
An Object Encoding For SelfType (2007)
Steven E. Ganz, Daniel P. Friedman
SelfType is a programming language feature of object systems which allows both methods and instance variable declarations to refer to the type of self. We present an object encoding sucient to model...
Christopher T. Haynes, R. Kent Dybvig, Daniel P. Friedman, Lorilee Sadler, George Springer
the utility of the curricular materials developed by this project. 1 Introduction The Scheme programming language was initially designed at MIT to support research in programming languages [19]. The...
Trampolining Architectures (2007)
Steven Ganz Indiana, Steven E. Ganz, Daniel P. Friedman
A trampolining architecture is a special case and extension of a monad which is useful in implementing multiprogramming. Five trampolining architectures, operating over the range of two trampolining...
A Monadic Categorical Semantics for Threads (2007)
Jonathan Sobel, Steven E. Ganz, Daniel P. Friedman, Mitchell Wand
Rather than relegating threads to be a machine-level concept, it is possible to describe thread semantics at the programming-language level. Here, a categorical semantics is given for a potentially...
Characterizing the Paralation Model using Dynamic Assignment (2007)
Eric Freeman, Daniel P. Friedman
. Collection-oriented languages provide high-level constructs for describing computations over collections. These languages are becoming increasingly popular with the advent of massively parallel...
We provide a short derivation of the Krivine machine by showing how it simulates weak head reduction. We propose a small variation to the machine that improves its performance dramatically. Recall...
Case of Modular Interpreters and the Search for a Solution in Object-Oriented Programming (2007)
Steven E. Ganz, Daniel P. Friedman
The problem of writing modular interpreters for functional languages has largely been studied from the perspective of statically typed languages. This paper explores the use of an object-oriented...
An Object Encoding For SelfType (2007)
Steven E. Ganz, Daniel P. Friedman
SelfType is a programming language feature of object systems which allows both methods and instance variable declarations to refer to the type of self. We present an object encoding sucient to model...
THEORET I CAL PEARLS CPS in Little Pieces: Composing Partial Continuations (2007)
This 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 terminates when...
THEORET I CAL PEARLS CPS in Little Pieces: Composing Partial Continuations (2007)
This 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...
Amr Sabry (editor, Daniel P. Friedman
The notion of continuations is ubiquitous in many different areas of computer
D.P.: From variadic functions to variadic relations: A miniKanren perspective (2006)
William E. Byrd, Daniel P. Friedman
We present an implementation of miniKanren, an embedding of logic programming in R 5 RS Scheme that comprises three logic operators. We describe these operators, and use them to define plus o, a...
Improving the Lazy Krivine Machine (2004)
Daniel Friedman Abdulaziz, Daniel P. Friedman, Abdulaziz Ghuloum, Jeremy G. Siek, Lynn Winebarger
Krivine presents the machine, which produces weak head normal form results. Sestoft introduces several call-by-need variants of the machine that implement result sharing via pushing update markers on...
We provide a short derivation of the Krivine machine by showing how it simulates weak head reduction. We propose a small variation to the machine that improves its performance dramatically. Recall...
UNIFICATION SOURCE-TRACKING WITH APPLICATION TO DIAGNOSIS OF TYPE INFERENCE (2002)
Daniel P. Friedman, Ph. D, Steven D. Johnson, Ph. D, Paul W. Purdom, Ph. D
ii
Essentials of Programming Languages (2001)
Friedman, Daniel P., Wand, Mitchell, Haynes, Christopher T., Abelson, Hal (pról.)
Obra en que se explican los principales conceptos relativos a los lenguajes de programación, desde un punto de vista analítico, a la vez que se da la semántica de muchos elementos de los lenguajes...
Essentials of Programming Languages (2001)
Friedman, Daniel P., Wand, Mitchell, Haynes, Christopher T., Abelson, Hal (pról.)
0-262-06217-8
Recursion is a computational effect (2000)
Daniel P. Friedman, Daniel P. Friedman, Amr Sabry, Amr Sabry
In a recent paper, Launchbury, Lewis, and Cook observe that some Haskell applications could benefit from a combinator mfix for expressing recursion over monadic types. We investigate three possible...
Aspect-Oriented Programming is Quantification and Obliviousness (2000)
Robert E. Filman, Daniel P. Friedman
This paper proposes that the distinguishing characteristic of Aspect-Oriented Programming (AOP) systems is that they allow programming by making quantified programmatic assertions over programs...
Writing macros in continuation-passing style (2000)
Erik Hilsdale, Daniel P. Friedman
The Scheme programming language has a standard mechanism for syntactic extension that is little used because it is perceived to have not enough expressive power. While there are useful...
Trampolining Architectures (2000)
Steven E. Ganz, Daniel P. Friedman
A trampolining architecture is a special case and extension of a monad which is useful in implementing multiprogramming. Five trampolining architectures, operating over the range of two trampolining...
Recursion is a Computational E ect (2000)
Daniel P. Friedman, Amr Sabry, Daniel P. Friedman, Amr Sabry
In a recent paper, Launchbury, Lewis, and Cook observe that some Haskell applications could bene t from a combinator m x for expressing recursion over monadic types. We investigate three possible de...
Amr Sabry (editor, Daniel P. Friedman, John Hatcli, Carolyn Talcott
The notion of continuations is ubiquitous in many di erent areas of computer
Quantification and Obliviousness (2000)
Robert E. Filman, Daniel P. Friedman, Robert E. Filman, Robert E. Filman, Daniel P. Friedman
This paper proposes that the distinguishing characteristic of Aspect-Oriented Programming (AOP) systems is that they allow programming by making quantified programmatic assertions over programs...
Amr Sabry (editor, Daniel P. Friedman, John Hatcli, Carolyn Talcott
The notion of continuations is ubiquitous in many di erent areas of computer
Recursion is a Computational E ect (2000)
Daniel P. Friedman, Amr Sabry, Daniel P. Friedman, Amr Sabry
In a recent paper, Launchbury, Lewis, and Cook observe that some Haskell applications could bene t from a combinator m x for expressing recursion over monadic types. We investigate three possible de...
Writing programs in continuation-passing style is a good tool for understanding reified continuations and call/cc. Similarly, writing programs in an object-oriented style is a good tool for...
Steven E. Ganz, Daniel P. Friedman
A 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...
Abstraction and Performance from Explicit Monadic Reflection (1999)
Jonathan Sobel, Erik Hilsdale, R. Kent Dybvig, R. Kent, Dybvig Daniel, Daniel P.Friedman
ion and Performance from Explicit Monadic Re#ection Jonathan Sobel Erik Hilsdale R. Kent Dybvig Daniel P.Friedman # Department of Computer Science Indiana University Bloomington, Indiana 47405...
Steven E. Ganz, Daniel P. Friedman, Mitchell Wand
A trampolined program is organized as a single loop in whichcomputations are scheduled and their execution allowed to proceed in discrete steps. Writing programsintrampolined style supports...
Steven E. Ganz, Daniel P. Friedman, Mitchell Wand
A 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...
Steven Ganz Indiana, Steven E. Ganz, Daniel P. Friedman
A 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...
Abstraction and Performance from Explicit Monadic Reflection (1999)
Jonathan Sobel, Erik Hilsdale, R. Kent Dybvig, Daniel P. Friedman
Much of the monadic programming literature gets the types right but the abstraction wrong. Using monadic parsing as the motivating example, we demonstrate standard monadic programs in Scheme,...
ii Copyright cfl1999 Oscar Waddell ALL RIGHTS RESERVED iii iv Acknowledgments I am profoundly grateful to my advisor, Kent Dybvig, for his keen insight, patient support, and sound advice. His active...
Multi-way Streams in Scheme \Lambda. (1999)
John Franco, Daniel P. Friedman, Steven D. Johnson
Abstract We present a mechanism for the maintenance of streams based on the Scheme facility of call-with-current-continuation or call/cc. The mechanism supports stream sharing and has overhead cost...
GRASPE 1.5: A GRAPH PROCESSOR AND ITS APPLICATION. (1998)
Friedman,Daniel P., Dickson,David C., Fraser,John J., Pratt,Terrence W.
A set of primitives to allow graph processing on a list processing system is investigated. The object of the investigation is to provide a method of applying intuitive graph solution techniques to...
Data Compilation: Its Design and Analysis. (1998)
Franco, John, Friedman, Daniel P.
The aim of this research is to study the idea compilation and its impact on the development of concise, efficient, verifiable code. This entails developing, formalizing, analyzing, and extending a...
Synthesizing object-oriented and functional design to promote re-use (1998)
Shriram Krishnamurthi, Matthias Felleisen, Daniel P. Friedman
Abstract. Many problems require recursively speci ed 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...
Synthesizing object-oriented and functional design to promote re-use (1998)
Shriram Krishnamurthi, Matthias Felleisen, Daniel P. Friedman
A preliminary version of this paper appeared in the
Recycling Continuations (1998)
Jonathan Sobel, Daniel P. Friedman
If 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,...
Revised^5 Report on the Algorithmic Language Scheme (1998)
H. Abelson, R. Kent Dybvig, Christopher T. Haynes, Guillermo J. Rozas, ...
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...
Revised^5 Report on the Algorithmic Language Scheme (1998)
Richard Kelsey, William Clinger, Jonathan Rees (editors, Jonathan Rees, H. Abelson, ...
Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates...
Revised^5 Report on the Algorithmic Language Scheme (1998)
Richard Kelsey, William Clinger, Jonathan Rees (editors, Jonathan Rees, H. Abelson, ...
Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates...
An Introduction to Reflection-Oriented Programming (1996)
J.M. Sobel, Daniel P. Friedman
Most accounts of reflection are in an interpreted framework and tend to assume the availability of particular pieces of the state of a program's interpretation, including the current source code...
Modeling Subobject-based Inheritance (1996)
Jonathan G. Rossie, Daniel P. Friedman
: A model of subobjects and subobject selection gives us a concise expression of key semantic relationships in a variety of inheritance-based languages. Subobjects and their selection have been...
Modeling Subobject-based Inheritance (1996)
Jonathan G. Rossie, Daniel P. Friedman, Mitchell Wand
. A model of subobjects and subobject selection gives us a concise expression of key semantic relationships in a variety of inheritancebased languages. Subobjects and their selection have been...
Modeling Subobject-based Inheritance (1996)
Jonathan Rossie, Daniel P. Friedman
. A model of subobjects and subobject selection gives us a concise expression of key semantic relationships in a variety of inheritancebased languages. Subobjects and their selection have been...
An Algebraic Semantics of Subobjects (1996)
Jonathan G. Rossie, Daniel P. Friedman
Existing 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...
An Introduction to Reflection-Oriented Programming (1996)
Jonathan M. Sobel, Daniel P. Friedman
Most accounts of reflection are in an interpreted framework and tend to assume the availability of particular pieces of the state of a program's interpretation, including the current source code...
A Unified Approach to Hardware Verification through Heterogeneous Logic of Design Diagrams (1996)
Jon Barwise, Steven D. Johnson, Daniel P. Friedman, Kathryn Fisler, Kathryn Fisler
Designers use a variety of notations, some of them diagrammatic, while developing systems. Unfortunately, verification tools mainly support single, textual logics. This gap between design practice...
Flexible And Practical Flow Analysis for Higher-Order Programming Languages (1996)
R. Kent Dybvig, Ph. D, Daniel P. Friedman, Peter Shirley, Jon Barwise, J. Michael Ashley, ...
by
Compiler Construction Using Scheme (1995)
Erik Hilsdale, J. Michael Ashley, R. Kent Dybvig, R. Kent, Dybvig Daniel, Daniel P. Friedman
This paper describes a course in compiler design that focuses on the Scheme implementation of a Scheme compiler that generates native assembly code for a real architecture. The course is suitable for...
Compiler Construction Using Scheme (1995)
Erik Hilsdale, J. Michael Ashley, R. Kent Dybvig, R. Kent, Dybvig Daniel, Daniel P. Friedman
This paper describes a course in compiler design that focuses on the Scheme implementation of a Scheme compiler that generates native assembly code for a real architecture. The course is suitable for...
Foundations for a Semantics of Subobjects (Extended Abstract) (1995)
Jonathan G. Rossie, Daniel P. Friedman
Jonathan G. Rossie, Jr. and Daniel P. Friedman fjrossie,dfriedg@cs.indiana.edu Department of Computer Science, Indiana University 215 Lindley Hall, Bloomington, Indiana 47405 May 17, 1995 Abstract We...
Towards a Theory of Reflective Programming Languages (1993)
Anurag Mendhekar, C Flanurag Mendhekar, Daniel P. Friedman, Daniel P. Friedman
This paper attempts to develop a better theoretical understanding of reflective systems. We begin by a developing a reflective extension of the v -calculus and define a simple operational semantics...
Towards a Theory of Reflective Programming Languages (Extended Abstract) (1993)
Anurag Mendhekar, Daniel P. Friedman
This paper attempts to develop a better theoretical understanding of reflective systems. We begin by developing a reflective extension of the Lambda-calculus and define a simple operational semantics...
Quasi-Static Scoping: Sharing Variable Bindings Across Multiple Lexical Scopes (1993)
Shinn-Der Lee, Daniel P. Friedman
Static 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....
John Wiseman Simmons, John Wiseman, Simmons Ii, Daniel P. Friedman
Introduction A reflective system allows the user's code to reify and manipulate parts of the system's computational state. The modified state can then be reinstalled, changing the course of...
Shinn-der Lee, Daniel P. Friedman
Abstract. Adding environments as first-class entities to a language can greatly enhance its expressiveness. But first-class environments rely on identifiers, the syntax of variables, and thus do not...
Shinn-Der Lee, Daniel P. Friedman
Adding environments as first-class values to a language can greatly enhance its expressiveness. But first-class environments do not mesh well into a lexically scoped language since they rely on...
Language Extension via First-class Interpreters (1992)
John Wiseman Simmons, John Wiseman, Simmons Ii, Stanley Jefferson, Daniel P. Friedman
Refci is an extensible reflective language based on the reflective tower model. The Refci interpreter procedures are reifiable, first-class objects, and user programs can directly modify the...
Towards Leakage Containment (1992)
Julia L. Lawall, Daniel P. Friedman
Functional programs are organized into procedures, each encapsulating a specific task. A procedure should not cause its callers to repeat its work. This forced repetition of work we call leakage. In...
A Reflective System is as Extensible as its Internal Representations: An Illustration (1992)
John Wiseman Simmons, John Wiseman, Simmons Ii, Daniel P. Friedman
Reflective systems are intended to be open enough to allow the user to extend and modify them easily. In this paper we show that the openness and extensibility of a reflective system depends to a...
A Simple Reflective Interpreter (1992)
Stanley Jefferson, Stanley Jefferson, Daniel P. Friedman, Daniel P. Friedman
Procedurally reflective programming languages enable user programs to semantically extend the language itself, by permitting them to run at the level of the language implementation with access to...
A simple reflective interpreter (1992)
Stanley Jefferson, Daniel P. Friedman
Procedurally reflective programming languages enable user programs to semantically extend the language itself, by permitting them to run at the level of the language implementation with access to...
Towards Leakage Containment (1992)
Julia L. Lawall, Daniel P. Friedman
Functional programs are organized into procedures, each encapsulating a speci c task. A procedure should not cause its callers to repeat its work. This forced repetition of work we call leakage. In...
Shinn-der Lee, Daniel P. Friedman
Adding environments as rst-class values to a language can greatly enhance its expressiveness. But rst-class environments do not mesh well into a lexically scoped language since they rely on identi...
Revised^4 Report on the Algorithmic Language Scheme (1991)
William Clinger, Jonathan Rees, Jonathan Rees (editors, Hal Abelson, ...
Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates...
Multi-way Streams in Scheme (1989)
John Franco Daniel, Daniel P. Friedman, Steven D. Johnson
We present a mechanism for the maintenance of streams based on the Scheme facility of call-with-current-continuation or call/cc. The mechanism supports stream sharing and has overhead cost which is...
The mystery of the tower revealed: A non-reflective description of the reflective tower (1988)
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 knowledge...
Expansion-Passing Style: A General Macro Mechanism (1988)
R. Kent Dybvig, Daniel P. Friedman, Christopher T. Haynes
The traditional Lisp macro expansion facility inhibits several important forms of expansion control. These include selective expansion of subexpressions, expansion of subexpressions using modified...