Results 1  10
of
17
An algorithm for optimal lambda calculus reduction
, 1990
"... all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be ..."
Abstract

Cited by 120 (0 self)
 Add to MetaCart
all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee.
Conventional and Uniqueness Typing in Graph Rewrite Systems (Extended Abstract)
 In Proceedings of the 13th Conference on the Foundations of Software Technology and Theoretical Computer Science
, 1993
"... In this paper we describe a Currylike type system for graphs and extend it with uniqueness information to indicate that certain objects are only `locally accessible'. The correctness of type assignment guarantees that no external access on such an object will take place in the future. We prove that ..."
Abstract

Cited by 69 (5 self)
 Add to MetaCart
In this paper we describe a Currylike type system for graphs and extend it with uniqueness information to indicate that certain objects are only `locally accessible'. The correctness of type assignment guarantees that no external access on such an object will take place in the future. We prove that types are preserved under reduction (for both type systems) for a large class of rewrite systems. Adding uniqueness information provides a solution to two problems in implementations of functional languages: efficient space management and interfacing with nonfunctional operations.
Concurrent Clean
, 1991
"... Concurrent Clean is an experimental, lazy, higherorder parallel functional programming language based on term graph rewriting. An important difference with other languages is that in Clean graphs are manipulated and not terms. This can be used by the programmer to control communication and sharing ..."
Abstract

Cited by 60 (4 self)
 Add to MetaCart
Concurrent Clean is an experimental, lazy, higherorder parallel functional programming language based on term graph rewriting. An important difference with other languages is that in Clean graphs are manipulated and not terms. This can be used by the programmer to control communication and sharing of computation. Cyclic structures can be defined. Concurrent Clean furthermore allows to control the (parallel) order of evaluation to make efficient evaluation possible. With help of sequential annotations the default lazy evaluation can be locally changed into eager evaluation. The language enables the definition of partially strict data structures which make a whole new class of algorithms feasible in a functional language. A powerful and fast strictness analyser is incorporated in the system. The quality of the code generated by the Clean compiler has been greatly improved such that it is one of the best code generators for a lazy functional language. Two very powerful parall...
Dactl: An Experimental Graph Rewriting Language
 Proc. 4th International Workshop on Graph Grammars
, 1991
"... This paper gives some examples of how computation in a number of languages may be described as graph rewriting, giving the Dactl notation for the examples shown. It goes on to present the Dactl model more formally before giving a formal definition of the syntax and semantics of the language. 2 Examp ..."
Abstract

Cited by 34 (7 self)
 Add to MetaCart
This paper gives some examples of how computation in a number of languages may be described as graph rewriting, giving the Dactl notation for the examples shown. It goes on to present the Dactl model more formally before giving a formal definition of the syntax and semantics of the language. 2 Examples of Computation by Graph Rewriting
Properties of a Firstorder Functional Language with Sharing
 Theoretical Computer Science
, 1994
"... A calculus and a model for a firstorder functional language with sharing is presented. In most implementations of... ..."
Abstract

Cited by 22 (4 self)
 Add to MetaCart
A calculus and a model for a firstorder functional language with sharing is presented. In most implementations of...
A Syntactic Approach to Program Transformations
, 1991
"... Kid, a language for expressing compiler optimizations for functional languages is introduced. The language is λcalculus based but treats letblocks as first class objects. Letblocks and associated rewrite rules provide the basis to capture the sharing of subexpressions precisely. The langua ..."
Abstract

Cited by 16 (6 self)
 Add to MetaCart
Kid, a language for expressing compiler optimizations for functional languages is introduced. The language is λcalculus based but treats letblocks as first class objects. Letblocks and associated rewrite rules provide the basis to capture the sharing of subexpressions precisely. The language goes beyond λcalculus by including Istructures which are essential to express efficient translations of list and array comprehensions. A calculus and a parallel interpreter for Kid are developed. Many commonly known program transformations are also presented. A partial evaluator for Kid is developed and a notion of correctness of Kid transformations based on the syntactic structure of terms and printable answers is presented.
Relating Graph and Term Rewriting via Böhm Models
 in Engineering, Communication and Computing 7
, 1993
"... . Dealing properly with sharing is important for expressing some of the common compiler optimizations, such as common subexpressions elimination, lifting of free expressions and removal of invariants from a loop, as sourcetosource transformations. Graph rewriting is a suitable vehicle to accommoda ..."
Abstract

Cited by 8 (4 self)
 Add to MetaCart
. Dealing properly with sharing is important for expressing some of the common compiler optimizations, such as common subexpressions elimination, lifting of free expressions and removal of invariants from a loop, as sourcetosource transformations. Graph rewriting is a suitable vehicle to accommodate these concerns. In [4] we have presented a term model for graph rewriting systems (GRSs) without interfering rules, and shown the partial correctness of the aforementioned optimizations. In this paper we define a different model for GRSs, which allows us to prove total correctness of those optimizations. Differently from [4] we will discard sharing from our observations and introduce more restrictions on the rules. We will introduce the notion of Bohm tree for GRSs, and show that in a system without interfering and nonleft linear rules (orthogonal GRSs), Bohm tree equivalence defines a congruence. Total correctness then follows in a straightforward way from showing that if a program M co...
Rank 2 Types for Term Graph Rewriting (Extended Abstract)
"... We define a notion of type assignment with polymorphic intersection types of rank 2 fora term graph rewriting language that expresses sharing and cycles. We show that type assignment is decidable through defining, using the extended notion of unification from [5],a notion of principal pair which gen ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
We define a notion of type assignment with polymorphic intersection types of rank 2 fora term graph rewriting language that expresses sharing and cycles. We show that type assignment is decidable through defining, using the extended notion of unification from [5],a notion of principal pair which generalizes ml's principal type property.
Rank 2 types for term graph rewriting
 In TIP’02, volume 75 of ENTCS
, 2003
"... We define a notion of type assignment with polymorphic intersection types of rank 2 for a term graph rewriting language that expresses sharing and cycles. We show that type assignment is decidable through defining, using the extended notion of unification from [5], a notion of principal pair which g ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
We define a notion of type assignment with polymorphic intersection types of rank 2 for a term graph rewriting language that expresses sharing and cycles. We show that type assignment is decidable through defining, using the extended notion of unification from [5], a notion of principal pair which generalizes ML’s principal type property.
Operational Machine Specification in a Functional Programming Language
, 1995
"... This paper advocates the use functional programming languages for the formal specification of (abstract) machines. The presented description method describes machines by a twolevel model. At the bottom layer machine components and the micro instructions to handle them are described by using an abst ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
This paper advocates the use functional programming languages for the formal specification of (abstract) machines. The presented description method describes machines by a twolevel model. At the bottom layer machine components and the micro instructions to handle them are described by using an abstract data type. The top layer describes the machine instructions in terms of these micro instructions