Results 21 - 30
of
114
On the Interaction of Lazy Evaluation and Backtracking
- In Proc. of the 4th International Symposium on Programming Language Implementation and Logic Programming
, 1992
"... We investigate the interaction of lazy evaluation and backtracking in the framework of functional logic languages, whose operational semantics is based on lazy narrowing. Technically, it is no problem to realize a lazy narrowing strategy by adapting the well-known techniques, which have been develop ..."
Abstract
-
Cited by 21 (0 self)
- Add to MetaCart
We investigate the interaction of lazy evaluation and backtracking in the framework of functional logic languages, whose operational semantics is based on lazy narrowing. Technically, it is no problem to realize a lazy narrowing strategy by adapting the well-known techniques, which have been developed for functional languages, to the more general evaluation mechanism of functional logic languages. But, unfortunately, it turns out, that the use of a lazy strategy has some severe disadvantages. In particular, it may lead to nontermination in combination with backtracking, where an innermost strategy will determine a solution. The use of demandedness information for function arguments allows us to define a mixture between an eager and a lazy evaluation strategy, which partially helps to cope with these problems. The runtimes obtained for various example programs with respect to the different strategies, substantiate that the mixed strategy is a reasonable compromise between an eager and a...
Annotated Type Systems for Program Analysis
, 1995
"... Interpretation Table 1.2: Annotations in the Thesis In Chapter 2 we present a combined strictness and totality analysis.We are specifying the analysis as an annotated type system. The type system allows conjunctions of annotated types, but only at the top-level. The analysis is somewhat more powerf ..."
Abstract
-
Cited by 20 (2 self)
- Add to MetaCart
Interpretation Table 1.2: Annotations in the Thesis In Chapter 2 we present a combined strictness and totality analysis.We are specifying the analysis as an annotated type system. The type system allows conjunctions of annotated types, but only at the top-level. The analysis is somewhat more powerful than the strictness analysis by Kuo and Mishra [KM89] due to the conjunctions and in that we also consider totality. The analysis is shown sound with respect to a natural-style operational semantics. The analysis is not immediately extendable to full conjunction. The analysis of Chapter 3 is also a combined strictness and totality analysis, however with "full" conjunction. Soundness of the analysis is shown with respect to a denotational semantics. The analysis is more powerful than the strictness analyses by Jensen [Jen92a] and Benton [Ben93] in that it in addition to strictness considers totality. So far we have only specified the analyses, however in order for the analyses to be practically useful we need an algorithm for inferring the annotated types. In Chapter 4 we construct an algorithm for the analysis of Chapter 2 The conjunctions are only allow at the "top-level". 1.3. OVERVIEW OF THESIS 25 3usingthelazy type approach by Hankin and Le Metayer [HM94a]. The reason for choosing the analysis from Chapter 3 is that the approach not applicable to the analysis from Chapter 2. In Chapter 5 we study a binding time analysis. We take the analysis specified by Nielson and Nielson [NN92] and we construct an more e#cient algorithm than the one proposed in [NN92]. The algorithm collects constraints in a structural manner as the algorithm T [Dam85]. Afterwards the minimal solution to the set of constraints is found. The analysis in Chapter 6 is specified by abstract interp...
Single Assignment C - Functional Programming Using Imperative Style
- In John Glauert (Ed.): Proceedings of the 6th International Workshop on the Implementation of Functional Languages. University of East Anglia
, 1994
"... This paper proposes a new functional programming language called Sac (Single Assignment C) which tries to combine the best of two worlds: the efficiency and portability of C (or Fortran) and the concurrency deducable from the functional paradigm. The major objectives in the design of Sac comprise s ..."
Abstract
-
Cited by 18 (4 self)
- Add to MetaCart
This paper proposes a new functional programming language called Sac (Single Assignment C) which tries to combine the best of two worlds: the efficiency and portability of C (or Fortran) and the concurrency deducable from the functional paradigm. The major objectives in the design of Sac comprise support for high performance concurrent scientific applications (number crunching), a module concept which allows for the integration of non-funtional components, and a syntax as close as possible to C. 1 Introduction Functional programming languages did not yet find a broad acceptance by application programmers outside the functional community. The reasons for this situation are manifold and differ depending on the field of application. Of primary interest in this paper are scientific applications involving complex manipulations of arrays. For this class of applications the following criteria are the most important ones for the choice of a suitable language: ffl availability of primitive a...
Comprehension Syntax
- SIGMOD RECORD
, 1994
"... The syntax of comprehensions is very close to the syntax of a number of practical database query languages and is, we believe, a better starting point than first-order logic for the development of database languages. We give an informal account of a language based on comprehension syntax that deals ..."
Abstract
-
Cited by 17 (2 self)
- Add to MetaCart
The syntax of comprehensions is very close to the syntax of a number of practical database query languages and is, we believe, a better starting point than first-order logic for the development of database languages. We give an informal account of a language based on comprehension syntax that deals uniformly with a variety of collection types; it also includes pattern matching, variant types and function definition. We show, again informally, how comprehension syntax is a natural fragment of structural recursion, a much more powerful programming paradigm for collection types. We also show that a very small "abstract syntax language" can serve as a basis for the implementation and optimization of comprehension syntax.
The Fast Fourier Transform as a Database Query
, 1993
"... 13> and f(x; y) j (x; z) / R; (t; y) / S; z = tg --- the latter denoting the composition of binary relations R and S --- are queries in relational calculus, which operates on sets of tuples. However they can also be viewed as programs on lists and are meaningful in certain functional programming lan ..."
Abstract
-
Cited by 16 (3 self)
- Add to MetaCart
13> and f(x; y) j (x; z) / R; (t; y) / S; z = tg --- the latter denoting the composition of binary relations R and S --- are queries in relational calculus, which operates on sets of tuples. However they can also be viewed as programs on lists and are meaningful in certain functional programming languages [6]. It is known that such expressions can be transformed into an equivalent algebra of functions based on the categorical notion of a monad [7, 2] in which two central operations are a mapping operator ~ f that applies f to each member of a collection and a flattening function ¯ that flattens a collection of collections into a single collection. For sets ¯ is "big" union; for lists it is concaten
Partial Intersection Type Assignment in Applicative Term Rewriting Systems
- Proceedings of TLCA '93. International Conference on Typed Lambda Calculi and Applications, Utrecht, The Netherlands, volume 664 of Lecture Notes in Computer Science
, 1993
"... This paper introduces a notion of partial type assignment on applicative term rewriting systems that is based on a combination of an essential intersection type assignment system, and the type assignment system as defined for ML [16], both extensions of Curry's type assignment system [11]. Terms a ..."
Abstract
-
Cited by 16 (13 self)
- Add to MetaCart
This paper introduces a notion of partial type assignment on applicative term rewriting systems that is based on a combination of an essential intersection type assignment system, and the type assignment system as defined for ML [16], both extensions of Curry's type assignment system [11]. Terms and rewrite rules will be written as trees, and type assignment will consists of assigning intersection types function symbols, and specifying the way in which types can be assigned to nodes and edges between nodes. The only constraints on this system are local: they are imposed by the relation between the type assigned to a node and those assigned to its incoming and out-going edges. In general, given an arbitrary typeable applicative term rewriting system, the subject reduction property does not hold. We will formulate a sufficient but undecidable condition typeable rewrite rules should satisfy in order to obtain this property. Introduction In the recent years several paradigms hav...
Environments as First Class Objects
- In th ACM Symposium on Principle of Programming Languages Conference
, 1987
"... We describe a programming language called Symmetric Lisp that treats environments as firstclass objects. Symmetric Lisp allows programmers to write expressions that evaluate to environments, and to create and denote variables and constants of type environment as well. One consequence is that the ro ..."
Abstract
-
Cited by 16 (4 self)
- Add to MetaCart
We describe a programming language called Symmetric Lisp that treats environments as firstclass objects. Symmetric Lisp allows programmers to write expressions that evaluate to environments, and to create and denote variables and constants of type environment as well. One consequence is that the roles filled in other languages by a variety of limited, special purpose environment forms like records, structures, closures, modules, classes and abstract data types are filled instead by a single versatile and powerful structure. In addition to being its fundamental structuring tool, environments also serve as the basic functional object in the language. Because the elements of an environment are evaluated in parallel, Symmetric Lisp is a parallel programming language; because they may be assembled dyamically as well as statically, Symmetric Lisp accomodates an unusually flexible and simple (parallel) interpreter as well as other historysensitive applications requiring dynamic environments. We show that firstclass environments bring about fundamental changes in a language's structure: conventional distinctions between declarations and expressions, data structures and program structures, passive modules and active processes disappear. We argue that the resulting language is clean, simple and powerful.
Normalisation in Lambda Calculus and its relation to Type Inference
, 1996
"... Presentation of Rewriting and Typing 13 2 Abstract Rewriting Systems 15 2.1 Introduction : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 15 2.2 Abstract Rewriting Systems : : : : : : : : : : : : : : : : : : : : : : : : : : 15 2.3 Morphisms : : : : : : : : : : : : : : : : : : ..."
Abstract
-
Cited by 15 (1 self)
- Add to MetaCart
Presentation of Rewriting and Typing 13 2 Abstract Rewriting Systems 15 2.1 Introduction : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 15 2.2 Abstract Rewriting Systems : : : : : : : : : : : : : : : : : : : : : : : : : : 15 2.3 Morphisms : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 16 2.4 Properties of Abstract Rewriting Systems : : : : : : : : : : : : : : : : : : : 18 2.5 Strategies : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 19 2.6 Criteria : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 21 2.7 Conclusions and Related Work : : : : : : : : : : : : : : : : : : : : : : : : : 24 3 Topology 27 3.1 Introduction : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 27 3.2 Topology : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 28 3.3 Equivalence : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 30 3.4 Topological Characte...
A New Array Operation
- Graph Reduction: Proceedings of a Workshop
, 1986
"... This paper proposes a new solution, which is a variant on the "monolothic" approach to array operations. The new solution is also not completely satisfactory, but does have advantages complementary to other proposals. It makes a class of programs easy to express, notably those involving the construc ..."
Abstract
-
Cited by 14 (0 self)
- Add to MetaCart
This paper proposes a new solution, which is a variant on the "monolothic" approach to array operations. The new solution is also not completely satisfactory, but does have advantages complementary to other proposals. It makes a class of programs easy to express, notably those involving the construction of histograms. It also allows for parallel implementations without the need to introduce non-determinism. The work reported here was motivated by discussions at the Workshop on Graph Reduction, of which this is the proceedings. In particular, it was motivated by the contributions of Arvind and Paul Hudak (see this volume), and especially Arvind's observation that the histogram problem is difficult to solve in a satisfactory way. After the first draft of this paper was written, I discovered that Simon Peyton Jones independently suggested the same idea, also prompted by one of Arvind's talks. After the second draft was written, I discovered that Guy Steele and Daniel Hillis use a very similar notion in Connection Machine Lisp [SH86]. Apparently the simple innovation described in this paper is an idea whose time has come. This paper is organized as follows. Section 1 briefly surveys previously proposed array operations. Section 2 introduces the new operation. Section 3 gives a small example of its use. Section 4 discusses two variations on the array operation. Section 5 concludes. 1 Background

