Results 1 -
4 of
4
A Taxonomy of Functional Language Implementations Part II: Call-by-Name, Call-by-Need and Graph Reduction
, 1996
"... In Part I [5], we proposed an approach to formally describe and compare functional languages implementations. We focused on call-by-value and described well-known compilers for strict languages. Here, we complete our exploration of the design space of implementations by studying call-by-name, cal ..."
Abstract
-
Cited by 10 (4 self)
- Add to MetaCart
In Part I [5], we proposed an approach to formally describe and compare functional languages implementations. We focused on call-by-value and described well-known compilers for strict languages. Here, we complete our exploration of the design space of implementations by studying call-by-name, call-by-need and graph reduction. We express the whole compilation process as a succession of program transformations in a common framework. At each step, different transformations model fundamental choices or optimizations. We describe and compare the diverse alternatives for the compilation of the call-byname strategy in both environment and graph-based models. The different options for the compilation of b-reduction described in [5] can be applied here as well. Instead, we describe other possibilities specific to graph reduction. Call-by-need is nothing but call-by-name with redex sharing and update. We present how sharing can be expressed in our framework and we describe different...
What is an Efficient Implementation of the λ-calculus?
, 1991
"... We propose to measure the e#ciency of any implementation of the #- calculus as a function of a new parameter #, that is itself a function of any #-expression. Complexity is expressed here as a function of # just as runtime is expressed as a function of the input size n in ordinary analysis of alg ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
We propose to measure the e#ciency of any implementation of the #- calculus as a function of a new parameter #, that is itself a function of any #-expression. Complexity is expressed here as a function of # just as runtime is expressed as a function of the input size n in ordinary analysis of algorithms. This enables implementations to be compared for worst case e#ciency. We argue that any implementation must have complexity #(#), i.e. a linear lower bound. Furthermore, we show that implementations based upon Turner Combinators or Hughes Super-combinators have complexities 2 #(#) , i.e. an exponential lower bound. It is open whether any implementation of polynomial complexity, # O(1) , exists, although some implementations have been implicitly claimed to have this complexity. Introduction Objectives The aim of this paper is to provide a theoretical basis for e#ciency considerations in the implementation of functional languages. So far, people working in this area have approa...
What is an Efficient Implementation of the λ-calculus?
, 1991
"... We propose to measure the efficiency of any implementation of the λcalculus as a function of a new parameter ν, that is itself a function of any λ-expression. Complexity is expressed here as a function of ν just as runtime is expressed as a function of the input size n in ordinary analysis of algori ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
We propose to measure the efficiency of any implementation of the λcalculus as a function of a new parameter ν, that is itself a function of any λ-expression. Complexity is expressed here as a function of ν just as runtime is expressed as a function of the input size n in ordinary analysis of algorithms. This enables implementations to be compared for worst case efficiency. We argue that any implementation must have complexity Ω(ν), i.e. a linear lower bound. Furthermore, we show that implementations based upon Turner Combinators or Hughes Super-combinators have complexities 2 Ω(ν), i.e. an exponential lower bound. It is open whether any implementation of polynomial complexity, ν O(1), exists, although some implementations have been implicitly claimed to have this complexity.
Higher-Order Rigid E-Unification
- 5th International Conference on Logic Programming and Automated Reasoning', number 822 in `Lecture Notes in Artificial Intelligence
"... . Higher-order E-unification, i.e. the problem of finding substitutions that make two simply typed -terms equal modulo fi or fij- equivalence and a given equational theory, is undecidable. We propose to rigidify it, to get a resource-bounded decidable unification problem (with arbitrary high bound ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
. Higher-order E-unification, i.e. the problem of finding substitutions that make two simply typed -terms equal modulo fi or fij- equivalence and a given equational theory, is undecidable. We propose to rigidify it, to get a resource-bounded decidable unification problem (with arbitrary high bounds), providing a complete higher-order E-unification procedure. The techniques are inspired from Gallier's rigid E-unification and from Dougherty and Johann's use of combinatory logic to solve higher-order E-unification problems. We improve their results by using general equational theories, and by defining optimizations such as higherorder rigid E-preunification, where flexible terms are used, gaining much efficiency, as in the non-equational case due to Huet. 1 Introduction Higher-order E-unification is the problem of finding complete sets of unifiers of two simply typed -terms modulo fi or fij-equivalence, and modulo an equational theory E . This problem has applications in higher-order a...

