66 citations found. Retrieving documents...
T. Johnsson. Efficient compilation of lazy evaluation. In Proc SIGPLAN Symposium on Compiler Construction, Montreal. ACM, June 1984.

 Home/Search   Document Details and Download   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents  Next 50

Cheap Eagerness: Speculative Evaluation in a Lazy Functional.. - Faxen (2000)   (2 citations)  (Correct)

....of time (the same problem occurs with case expressions) Sometimes one can see that a variable is already evaluated by looking at the scope of the variable. This typically happens for variables with several occurrences, at least one of which is strict. Both the Chalmers LML Haskell compiler [9] and the Glasgow Haskell compiler [14] include this optimization. In order to go further than this, a global analysis is needed. The first such analysis was defined by Mycroft [10] although only for a first order language. His analysis is based on abstract interpretation of a denotational ....

.... improves performance in several ways: Fewer thunks need to be constructed and (often) later evaluated and unboxed data representations can be used in more places [12; 4] In addition, some compiler back ends have separate eval operations, for instance the Charlmes LML Haskell compiler [9] and our own compiler [3] Such an explicit eval operation can be eliminated if it can be proved that its argument will never be a thunk. Eliminating thunks increases the opportunities for this transformation. 2. THE LANGUAGE FLEET Figure 1 gives the syntax of Fleet. It is a simple functional ....

[Article contains additional citation context not shown here]

T. Johnsson. Efficient compilation of lazy evaluation. In M. Van Deusen, editor, Compiler construction: Proceedings of the ACM SIGPLAN '84 symposium (Montreal, Canada, June 17--22, 1984.


Abstract Machines for Programming Language Implementations - Diehl, Hartel, Sestoft (2000)   (6 citations)  (Correct)

....machine more efficient, Turner added further instructions, each with a functionality that is provably equivalent to a number of S and K combinators. The G machine (1984) was designed by Augustsson and Johnsson for lazy (call by need) evaluation of functional programs in supercombinator form [10,68,104]. Instead of interpreting supercombinators as rewrite rules, they were compiled into sequential code with special instructions for graph manipulation. The G machine is the basis of the Lazy ML [11] and HBC Haskell [13] implementations. The Krivine machine (1985) is a simple abstract machine for ....

T. Johnsson, Efficient compilation of lazy evaluation, Proceedings of the ACM SIGPLAN'84 Symposium on Compiler Construction, SIGPLAN Notices 19 (6) (1984) 58--69.


A Practical Implementation of Root Optimization in G-machine - Choi, O, Han (1998)   (Correct)

....User defined functions are compiled into instruction sequences for G machine. The instructions construct and manipulate explicitly graphs for expressions to reduce the expressions to their values. G machine compilation rules and state transition rules are shown in Figure 3 and Figure 4[7][9] The graph for a function application, which is a thunk, has two representations: the ap representation and the vap representation. These are described in Figure 1. The ap representation always has two entries: one for function part and the other for argument part. The vap representation has ....

Thomas Johnsson. Efficient compilation of lazy evaluation. In ACM SIGPLAN '84 Symposium on Compiler Construction, 1984.


pi-RED+: A Compiling Graph-Reduction System for a.. - Gärtner, Kimms, Kluge (1992)   (Correct)

....basic mechanisms of the abstract stack machine in conjunction with a novel indexing scheme which resolves naming conflicts that may occur in the presence of free variables. 1 Introduction Compiled graph reduction is known to be an efficient implementation technique for functional languages [Joh84, Fai86]. Function definitions are usually compiled to some flat set of supercombinator code which systematically constructs and reduces the graph of what eventually becomes the resulting program term. Compilation to efficient code generally requires that programs be well typed and do not contain free ....

T. Johnsson. Efficient compilation of lazy evaluation. In Proceedings of the SIGPLAN '84 Symposium on Compiler Construction, pages 58--69, 1984.


Within ARM's Reach: Compilation of Left-Linear Rewrite.. - Fokkink, Kamperman.. (1997)   (6 citations)  (Correct)

....machine [13] respectively. In contrast, the abstract rewriting machine in this paper involves the eager evaluation of first order terms. Several abstract machines have been used for lazy evaluation of higher order function application, notably: the S K reduction machine [45] the G machine [24], the three instruction machine [51] and the spineless tagless G machine [41] Basically, a lazy rewriting strategy postpones (innermost) rewriting of certain so called nonstrict arguments, in order to improve termination properties. Although ARM was designed purely for innermost rewriting, ....

T. Johnsson. Efficient compilation of lazy evaluation. In Proceedings ACM Symposium on Compiler Construction, Montreal, ACM SIGPLAN Notices, 19(6):58--69, 1984.


The Odin Genetic Programing System - Holmes (1995)   (Correct)

....problem: how to implement a lazy functional language as efficiently as possible. It was developed by Thomas Johnsson and Lennart Augustsson, at the Chalmers Institute of Technology (Chalmers Tekniska Hogskola) in Goteborg, Sweden. Since they published their seminal papers (Augustsson 1984, Johnsson 1984), the G machine has become popular, and is documented in many books including Peyton Jones (1987, pp. 293 366) In the current project a different problem was faced: how to implement a lazy functional language as quickly as possible, and with the least risk of serious technical problems. The ....

Johnsson, T. (1984), Efficient compilation of lazy evaluation, in `Proceedings of the ACM Conference on Compiler Construction', Montreal, Canada, pp. 58--69.


A Cost Analysis for a Higher-order Parallel Programming Model - Rangaswami (1996)   (19 citations)  (Correct)

....such as programmer annotations and dynamic techniques based on current load information [JH92, HJJ94] have been investigated. Reports of speedup on a number of applications coded in Haskell can be found in [Jr93] ffl The v; G machine [AJ89] This is a parallel version of the G machine [Joh84] It performs the supercombinator reduction of lazy ML programs. The supercombinators are translated into G machine instructions. The parallelism is explicitly requested by the programmer, using SPARK annotations. Speed ups have been obtained on example programs, as compared to their ....

Thomas Johnsson. Efficient compilation of lazy evaluation. In SIGPLAN 84 Symposium on Compiler Construction, pages 58--69, Montreal, Canada, 1984.


Sequent Combinators: A Hilbert System for the Lambda.. - Healfdene Goguen Department (1999)   (1 citation)  (Correct)

....combinators indexed by natural numbers. This is more complicated than the simple language with only two or three simple combinators. 3 Combinators have been used in implementations of functional programming following Turner [20] leading to such notions as supercombinators [13] lambda lifting [14], and director strings [16] However, these implementations do not consider the problem of equality of expressions involving the abstraction operator, and in particular the rule is not sound. Systems of explicit substitution (Abadi et al. 1] among many others) and categorical combinators [5] ....

T. Johnsson. Efficient compilation of lazy evaluation. Proceedings of the ACM Conference on Compiler Construction, pages 58--69, 1984.


Fixing Some Space Leaks With a Garbage Collector - Wadler (1987)   (17 citations)  (Correct)

....with functions that use tuples to return multiple results, and is the subject of this paper. Some good quality implementations of lazy functional languages have appeared, and significant functional programs have been written using these systems. For example, the LML compiler is written in LML [6, 7], and parts of a functional text editor and operating system have been implemented on the SKIM machine [2] As functional programming becomes more a practice as well as a theory, considerations of efficiency like those treated in this paper will become more important. This paper is organized as ....

Thomas Johnsson. Efficient compilation of lazy evaluation. In ACM SIGPLAN Symposium on Compiler Construction, June 1984. SIGPLAN Notices 19(6).


Mobile Haskell: Compiling Lazy Functional Programs for the Java.. - Wakeling (1998)   (5 citations)  (Correct)

....by compiling them for the same abstract machine used by Java. The Haskell to Java Virtual Machine code compiler it describes is novel because it is based on the h,Gi machine [AJ89] which is designed for implementing lazy functional languages on parallel processors, rather than the G machine [Joh84], which is designed for implementing them on sequential ones. The paper is organised as follows. Section 2 introduces our version of the h,Gi machine, and Section 3 shows how a small core functional language can be compiled for it. Section 4 introduces the Java Virtual Machine, and Section 5 ....

.... can encounter a tail call, and doing things this way avoids overflowing the Java Virtual Machine s control stack (see Section 5) As in the original h,Gi machine, operations on basic values, such as integers and characters, are compiled using a B scheme similar to that of the ordinary G machine [Joh84] (not shown in Figure 8) 4 The Java Virtual Machine This section describes the machine architecture and instruction set of the Java Virtual Machine [LY96] 4.1 Machine Architecture A Java program is organised into classes, which have methods for performing computation and describe the structure ....

T. Johnsson. Efficient Compilation of Lazy Evaluation. In Proceedings of the SIGPLAN'84 Symposium on Compiler Construction, pages 58--69, June 1984.


A Syntactic Approach to Program Transformations - Ariola, Arvind (1991)   (19 citations)  (Correct)

....for compilers of functional languages. One of its primary deficiency is the inability to capture the sharing of subexpressions. Avoiding repeated evaluation of an expression is a central concern in implementations of non strict functional languages. Not surprisingly, graph reduction [21] 19] [13], has been one of the popular ways of implementing functional languages, but it is only recently that people have investigated suitable calculii for graph rewriting [7] 8] and [9] Contextual Rewriting Systems, which we introduce in Section 2, represent another formalism to capture the sharing ....

T. Johnsson. Efficient Compilation of Lazy Evaluation. In Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction, pages 58--69, June 1984.


Cache Behaviour of Lazy Functional Programs - Langendoen, Agterkamp (1992)   (2 citations)  (Correct)

....on interpretive execution (SECD machine code [Landin64] and combinator reduction [Turner79] The measurements reported in this paper are gathered from benchmark programs compiled to native machine code. The compiler uses an abstract machine model similar to the G machine style of graph reduction [Johnsson84] Since the compiled code uses much less (temporary) heap space than the interpretative versions, we expect differences in cache behaviour. Section 4 contains a comparison of the two implementation techniques, and also addresses the differences with measurements taken from imperative programming ....

.... reduction The FAST compiler [Hartel91a] which has been developed at Southampton University in the UK, translates lazy functional programs into super combinators and outputs code for an abstract graph reduction machine similar to the G machine used in the LML compiler from Chalmers University [Johnsson84] The FCG code generator [Langendoen92] maps the abstract machine code onto low level assembly instructions and controls register allocation, code scheduling, etc. The combined FAST FCG compiler generates code whose quality compares well with other state of the art compilers for lazy functional ....

T. Johnsson. Efficient compilation of lazy evaluation. In ACM compiler construction, pages 58--69, Montr eal, Canada. SIGPLAN notices,19(6), 1984.


Parallel Implementations of Functional Languages - Martins (1992)   (1 citation)  (Correct)

....over traditional imperative ones. During the last decade, a number of researchers have been attempted to put these ideas into practice by proposing different implementations of functional languages. Substantial progress has been obtained for the sequential implementations of functional languages [Aug84, Joh84, Kranz86], however the parallel implementations still do not present big advantages as it was expected theoretically. 2. Some issues related to parallelism Every pure functional language can be considered as a version of the lambda calculus with some syntactic sugar. A consequence of the ChurchRosser ....

Johnsson, T. "Efficient compilation for lazy evaluation". In symposium on Compiler Construction, ACM, June 1984, pp. 58-69.


Towards the Uniform Implementation of Declarative Languages - Chakravarty, Lock (1997)   (4 citations)  (Correct)

....logic languages efficiently. 1 Introduction A central requirement for the acceptance of declarative programming languages is the availability of efficient implementations. Sophisticated techniques for implementing single paradigm programming languages exist, for lazy functional languages [Joh84,KvEN 90,PL92,Pey92,LH92] and for logic languages [War83,AK91,VR90,Tay91,Hay94] Traditionally, different implementation techniques for functional languages are distinguished by the chosen evaluation order, which is either strict or lazy, and of which strict evaluation Preprint submitted to ....

....and maybe some program analysis, the performance can reach that of the other two systems. 5 Related Work Graph reduction is the standard technique for the implementation of lazy functional languages. The first abstract machine that efficiently implemented graph reduction was the G machine [Joh84] Several variations of the original proposal were made over the years; they include the highly efficient STGM [PS88,Pey92] and ABC machine [KvEN 90] which are the basis of the Glasgow Haskell Compiler and the Clean Compiler, respectively. The STGM was the prime source for the mechanisms ....

Thomas Johnsson. Efficient compilation of lazy evaluation. In Proceedings of the SIGPLAN '84 Symposium on Compiler Construction, 1984.


Compilation of Functional Languages Using Flow Graph Analysis - Hartel, Glaser, Wild (1994)   (3 citations)  (Correct)

....been described in the previous sections. We will not go into the detail of the remaining passes but briefly mention some of the more interesting ones. Cheap eagerness causes expressions to be evaluated in a lazy context when it is definitely cheaper to do so than it would be to build a suspension [8]. The sets of edges that carry normal forms in some style determined by necessity analysis and cheap eagerness analysis are combined in pass 20. Passes 29 31 assist the compiler in flattening the flow graph when printing the generated code. The compiler visits the nodes of the flow graphs in a ....

....Flow graph (2 point) 0 2468 125101 57571 9110 66856 25485 16078 Flow graph (3 point) 0 1379 85625 40954 7018 50849 19591 11953 Table 2: Cell claims for benchmark programs 4. gcode compiles the qsort program into scalar G machine code according to the compilation schemes as described by Johnsson [8]; 5. lambda ( S K K ) evaluates to I on an implementation of the K calculus [5] 6. qsort (sin 1, sin 1024) sorts a list of 1024 real numbers using quick sort; 7. sched 7 calculates an optimum schedule of 7 parallel jobs with a branch and bound algorithm [16] 8. wave 3 predicts the tides in a ....

[Article contains additional citation context not shown here]

T. Johnsson. Efficient compilation of lazy evaluation. SIGPLAN notices, 19(6):58--69, June 1984.


Semantics of pH: A parallel dialect of Haskell - Aditya, Arvind, Maessen (1995)   (8 citations)  (Correct)

....the exact ordering of tasks is decided dynamically. In this section we describe the eager evaluation model of pH by giving a parallel interpreter for the kernel language of pH. Our interpreter is based on a parallel abstract machine, which is in the spirit of the G machine and its later variants [9, 5, 12]. We first describe the kernel language (Section 2.1) and then our parallel abstract machine (Section 2.2) and its instruction set (Section 2.3) It is followed by a description of the interpreter (Section 2.4) 2.1 The Kernel pH Language The abstract syntax of the kernel pH language is shown in ....

Thomas Johnsson. Efficient Compilation of Lazy Evaluation. Proc. ACM SIGPLAN '84 Symposium on Compiler Construction, SIGPLAN Notices, 19(6):58--69, June 1984.


Model, Language and Implementation Aspects of a Logic-Based.. - Zhu (1989)   (Correct)

....In a programmed graph reduction architecture, the reducer executes a program derived from the definition of the function used at the redex to perform the replacement. The G machine is an abstract architecture for programmed graph reduction. It was defined by Thomas Johnsson and Lennart Augustsson [Johnsson84] as the evaluation model for a compiler for lazy ML (LML) In it, the reduction step is quite efficient, as the program computes in terms of a stack of pointers (the P stack) into the expression graph. The G machine consists of a stack and a graph memory. The graph memory holds nodes ....

....of the function call is done. nd typeName2 = T 2 158 APPLY fact (a) 3 APPLY fact APPLY fact 2 2 (b) Figure 9. 2 Configuration After One Recursion For more detailed introduction to the G machine, the graph reduction techniques and their hardware realizations, the reader is referred to [Johnsson84, Kieburtz85, 87a, 87b, 87c]. The graph memory supports seven kinds of nodes. Two of them, CONS and NIL, support the list built in data structure; another three, INT, BOOL and FUNC, represent primitive data types. The APPLY node denotes an application of a function to its arguments. The HOLE node is a temporary placeholder ....

Johnsson, T., "Efficient Compilation of Lazy Evaluation," Proceedings of ACM SIGPLAN, 1984.


Making a Fast Curry - Push Enter Vs   (Correct)

No context found.

T. Johnsson. Efficient compilation of lazy evaluation. In Proc SIGPLAN Symposium on Compiler Construction, Montreal. ACM, June 1984.


Analysis and Efficient Implementation of Functional Programs - Sestoft (1991)   (43 citations)  (Correct)

No context found.

T. Johnsson. Efficient compilation of lazy evaluation. SIGPLAN Notices, 19(6):58-- 69, June 1984. Proc. ACM SIGPLAN '84 Symposium on Compiler Construction.


Operational Machine Specification in a Functional Programming.. - Koopman (1995)   (3 citations)  (Correct)

No context found.

T. Johnsson, `Efficient compilation of lazy evaluation', Proc. ACM SIGPLAN '84, Symposium on Compiler Construction, 1984, pp. 58--69.


Compilation of Functional Languages Using Flow Graph Analysis - Hartel, Glaser, Wild (1994)   (3 citations)  (Correct)

No context found.

T. Johnsson, `Efficient compilation of lazy evaluation', ACM Compiler Construction, Montre al, Canada, June 1984. SIGPLAN Notices, 19(6), pp. 58--69.


Fast Parallel Implementation of Lazy Languages - The.. - Kaser, Pawagi.. (1992)   (5 citations)  (Correct)

No context found.

T. Johnsson, Efficient compilation of lazy evaluation, ACM Symposium on Compiler Construction, 1984.


Efficient Strictness Analysis of Haskell in Haskell.. - Schütz..   (Correct)

No context found.

T. Johnsson. Efficient compilation of lazy evaluation. In Proceedings of the ACM Conference on Compiler Construction, Montreal, pages 58--69, 1984.


Algebraic Query Optimisation for Database Programming Languages - Poulovassilis, Small (1996)   (3 citations)  (Correct)

No context found.

Johnsson, T. Efficient compilation of lazy evaluation, Proc. ACM Conference on Compiler Construction, Montreal, June 1984, pp 58-69.


Fast Parallel Implementation of Lazy Languages -.. - Kaser, Pawagi.. (1992)   (5 citations)  (Correct)

No context found.

T. Johnsson, Efficient compilation of lazy evaluation, Compiler Construction, 1984.

First 50 documents  Next 50

Online articles have much greater impact   More about CiteSeer.IST   Add search form to your site   Submit documents   Feedback  

CiteSeer.IST - Copyright Penn State and NEC