Results 1  10
of
11
Projections for Strictness Analysis
, 1987
"... Contexts have been proposed as a means of performing strictness analysis on nonflat domains. Roughly speaking, a context describes how much a subexpression will be evaluated by the surrounding program. This paper shows how contexts can be represented using the notion of projection from domain theo ..."
Abstract

Cited by 98 (4 self)
 Add to MetaCart
Contexts have been proposed as a means of performing strictness analysis on nonflat domains. Roughly speaking, a context describes how much a subexpression will be evaluated by the surrounding program. This paper shows how contexts can be represented using the notion of projection from domain theory. This is clearer than the previous explanation of contexts in terms of continuations. In addition, this paper describes finite domains of contexts over the nonflat list domain. This means that recursive context equations can be solved using standard fixpoint techniques, instead of the algebraic manipulation previously used. Praises of lazy functional languages have been widely sung, and so have some curses. One reason for praise is that laziness supports programming styles that are inconvenient or impossible otherwise [Joh87, Hug84, Wad85a]. One reason for cursing is that laziness hinders efficient implementation. Still, acceptable efficiency for lazy languages is at last being achieved...
Declarative Continuations and Categorical Duality
, 1989
"... This thesis presents a formalism for reasoning about continuations in a categorical setting. It points out how values and continuations ca n be seen as categorically dual concepts, and that this symmetry extends to not only data types, but also control structures, evaluation strategies and higheror ..."
Abstract

Cited by 29 (0 self)
 Add to MetaCart
This thesis presents a formalism for reasoning about continuations in a categorical setting. It points out how values and continuations ca n be seen as categorically dual concepts, and that this symmetry extends to not only data types, but also control structures, evaluation strategies and higherorder constructs. The central idea is a view of continuations as a declarative concept, rather than an imperative one, and the implicat ions of this make up the spine of the presentation. A symmetrical extension of the typed *calculus is introduced, where values and continuations are treated as opposites, permitting a mirrorimage syntax for dual categorical concepts like products and coproducts. An implementable semantic description and a static type system for this calculus are given. A purely categorical description of the language is also obtained, through a correspondence with a system of combinatory logic, similar to a cartesian closed category, but with a completely symmetrical set of axioms. Finally, a number of possible practical applications and directions for further research are suggested.
Backwards Strictness Analysis: Proved and Improved
 In Functional Programming: Proceedings of the 1989 Glasgow Workshop
, 1989
"... Given a syntax tree representing an expression, and some information regarding that expression, a backwards analysis will involve propagating the information (with appropriate transformation) towards the leaves of the tree, to yield information about the subexpressions. Here, the information at the ..."
Abstract

Cited by 13 (5 self)
 Add to MetaCart
Given a syntax tree representing an expression, and some information regarding that expression, a backwards analysis will involve propagating the information (with appropriate transformation) towards the leaves of the tree, to yield information about the subexpressions. Here, the information at the root will describe the required definedness of the value of the expression, with the results of the analysis describing the definedness of the values lower in the tree sufficient or necessary to meet the condition at the root. In Projections for Strictness Analysis [1], such an analysis is described in which the information at each node is encoded by a special kind of function called a projection, with the results of the analysis revealing strictness information about the expression. This paper describes a more general and powerful technique, and provides proofs that both techniques meet a corresponding generalisation of the safety condition described in [1]. 1 Introduction The theory deve...
A Uniform Treatment of Order of Evaluation and Aggregate Update
 Theoretical Computer Science
, 1993
"... The article presents an algorithm for the destructive update optimization in firstorder lazy functional languages. The main component of the method is a new static analysis of the order of evaluation of expressions which, compared to other published work, has a much lower complexity and is not rest ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
The article presents an algorithm for the destructive update optimization in firstorder lazy functional languages. The main component of the method is a new static analysis of the order of evaluation of expressions which, compared to other published work, has a much lower complexity and is not restricted to pure lazy evaluation. The other component, which we call reduction to variables, is a method of detecting the variables which denote locations where the result of an expression might be stored. Starting with the operational semantics of the language, we introduce some markers for the values in the basic domain. By appropriately choosing the set of markers M and the method of propagating them during evaluation, we can extract some property of the evaluation in which an expression can participate in by looking at the marker of its value. We define then an equivalent denotational semantics and derive the above analyses, in an uniform way, by abstract interpretation over a subdomain of...
Projections for Polymorphic FirstOrder Strictness Analysis
 Math. Struct. in Comp. Science
, 1991
"... this paper, that results from this kind of analysis are, in a sense, polymorphic. This confirms an earlier conjecture [19], and shows how the technique can be applied to firstorder polymorphic functions. The paper is organised as follows. In the next section, we review projectionbased strictness a ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
this paper, that results from this kind of analysis are, in a sense, polymorphic. This confirms an earlier conjecture [19], and shows how the technique can be applied to firstorder polymorphic functions. The paper is organised as follows. In the next section, we review projectionbased strictness analysis very briefly. In Section 3 we introduce the types we will be working with: they are the objects of a category. We show that parameterised types are functors, with certain cancellation properties. In Section 4 we define strong and weak polymorphism: polymorphic functions in programming languages are strongly polymorphic, but we will need to use projections with a slightly weaker property. We prove that, under certain conditions, weakly polymorphic functions are characterised by any nontrivial instance. We can therefore analyse one monomorphic instance of a polymorphic function using existing techniques, and apply the results to every instance. In Section 5 we choose a finite set of projections for each type, suitable for use in a practical compiler. We call these specially chosen projections contexts, and we show examples of factorising contexts for compound types in order to facilitate application of the results of Section 4. We give a number of examples of polymorphic strictness analysis. Finally, in Section 6 we discuss related work and draw some conclusions. 2. Projections for Strictness Analysis
Demand Transformation Analysis for Concurrent Constraint Programs
, 1994
"... Domain In this section we construct a domain of abstract constraints called ACon, which abstracts the domain #(C). In the construction of ACon, we use two domains called D and D V , also introduced in this section, which consist of nonground, downwardsclosed types representing sets of terms in #( ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Domain In this section we construct a domain of abstract constraints called ACon, which abstracts the domain #(C). In the construction of ACon, we use two domains called D and D V , also introduced in this section, which consist of nonground, downwardsclosed types representing sets of terms in #(H V ) and some basic types, such as the set of integers. (H V is ordered by t 1 t 2 if t 1 is a substitution instance of t 2 .) The domain of types is given by D ::= ? j? j j c(D; : : : ; D) j numj D D j :D. Program variables are not mentioned by types in D. In the syntax of D, c ranges over constructor symbols and is a fixpoint operator. Type variables are given by 2 TV , which are used only for fixpoint constructions. The base types ?, ? (read, "nonvar"), and num represent H V , H V n V , and the set of integers, respectively. Example 3.1. fX = ?; Y = ?g is an element of ACon representing the downwardsclosed set of constraints where X is constrained arbitrarily (including not at all...
Strictness Analysis for Concurrent Logic Programs
, 1995
"... Concurrent and functional languages need strictness for different, but related reasons. In functional programming, strictness analysis is used to identify arguments that must be evaluated by a function call, so that the efficient callbyvalue reduction strategy can be applied without jeopardizing t ..."
Abstract
 Add to MetaCart
Concurrent and functional languages need strictness for different, but related reasons. In functional programming, strictness analysis is used to identify arguments that must be evaluated by a function call, so that the efficient callbyvalue reduction strategy can be applied without jeopardizing termination. In concurrent evaluation an analogous issue arises. In both contexts, the issue concerns how much information is required in a procedure's input to enable it to generate output information. We have created an analysis for concurrent constraint logic programs which maps output demands to input demands. We believe that this analysis will enable optimizations on these programs including runtime and compiletime scheduling optimizations, which promise to greatly increase the efficiency of these programs by increasing computation to communication ratios and reducing the runtime complexities of scheduling.
Design and Implementation of a Partial EvaluationBased Compiler for an Asynchronous Realtime Programming Language
, 1996
"... This thesis describes a compiler for the asynchronous realtime programming language ALDiSP. Though the language has a complex semantics not suited for easy compilation, the compiler has to generate code for target platforms that have stringent space limitations, and for target applications that hav ..."
Abstract
 Add to MetaCart
This thesis describes a compiler for the asynchronous realtime programming language ALDiSP. Though the language has a complex semantics not suited for easy compilation, the compiler has to generate code for target platforms that have stringent space limitations, and for target applications that have to satisfy hard realtime requirements. To accomplish this feat, the compiler is based upon an abstract interpreter that simulates all possible evaluation paths of the program. In a reconstruction phase, the program is then totally recreated from the information gained during this simulation. The abstract interpreter is an extension of the formal semantics of ALDiSP.
Strictness Analysis  Another Method
, 1993
"... Strictness analysis is a compile time analysis applicable to lazy functional programming languages. Strictness analysis can be used to significantly improve uniprocessor implementation speed and to derive nonspeculative parallelism. Many methods for doing strictness analysis have been proposed. Mos ..."
Abstract
 Add to MetaCart
Strictness analysis is a compile time analysis applicable to lazy functional programming languages. Strictness analysis can be used to significantly improve uniprocessor implementation speed and to derive nonspeculative parallelism. Many methods for doing strictness analysis have been proposed. Most of these are based on abstract interpretation and require fixpoint iteration. In this thesis we survey existing methods and then go on to define a new method which does not require fixpoint iteration. The new method is significantly more efficient than methods based on abstract interpretation. The abstract domain used is not fixed and can be expanded to obtain better accuracy. Our method is also easy to prove correct. We discuss further work necessary for the new method to realise its potential as a framework for fast and practical analyses.