MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Compiling lazy functional languages (1987) [69 citations — 1 self]

Download:
Download as a PDF | Download as a PS
by Thomas Johnsson
http://www.math.chalmers.se/~johnsson/Papers/diss-intro.ps.gz
Add To MetaCart

Abstract:

Miranda [Tur85], offer an attractive alternative to conventional imperative ones [Bac78], [Tur81]. In a functional language, executing a program corresponds to computing the value of an expression. In contrast to imperative languages, there are no notions of statements or updatable variables (i.e. in the sense of names for storage locations); thus, no side-effects are possible. Further, there is a much more general notion of a value: apart from integers, booleans, etc, a value can also be a large data structure (even e.g. an infinite list or tree, if lazy evaluation is used; see below), or a function. Among the most often cited advantages of functional languages are: ffl Simple and clean semantics. Functional programming languages, coming from the mathematical tradition of the-calculus [Chu41] and combinatory logic [CF58], have simple and clean semantics. The notion of referential transparency, whereby in an expression a sub-expression can always be replaced by any other equal in value, is of particular importance for e.g. correctness proofs and program transformations. ffl Expressive power and succinctness. Functional programs are typically 2--10 times shorter than conventional imperative ones; the factor varies depending on the actual

Citations

1064 A Structural Approach to Operational Semantics – Plotkin - 1981
369 Programming Be Liberated from von Neumann Style? A Functional Style and its Algebra of Programs – Backus - 1978
259 The Calculi of Lambda-Conversion – Church - 1941
257 The mechanical evaluation of expressions – Landin - 1964
170 A new implementation technique for applicative languages – Turner - 1979
117 The categorical abstract machine – Cousineau, Curien, et al. - 1985
108 Efficient compilation of lazy evaluation – Johnsson - 1984
97 Recursive Programming Techniques – Burge - 1975
96 Semantics and Pragmatics of the Lambda Calculus – Wadsworth - 1971
58 A lazy evaluator – Henderson, Jr - 1976
55 Über die Bausteine der mathematischen Logik. Mathematische Annalen, 92, 305–316. English translation, ‘On the building blocks of mathematical logic’ in van Heijenoort – Schönfinkel - 1924
54 An experimental applicative language – Hope - 1980
33 The semantic elegance of applicative languages – Turner - 1981
25 The Implementation of Functional Languages using Custom Hardware – Stoye - 1985
24 ALICE: A multi-processor reduction machine for the parallel evaluation of applicative languages – Darlington, Reeve - 1981
13 combinators: A new implementation method for applicative languages – Super - 1982
12 A dataflow architecture with tagged tokens – Arvind, Pingali - 1980
9 Code Generation Techniques for Functional Languages – Fairbairn, Wray - 1986
9 The G-machine: a fast, graph-reduction evaluator – Kieburtz - 1985
9 NORMA: a graph reduction processor – Scheevel - 1986
8 a non-strict language with polymorphic types – Miranda - 1985
7 Standard ML Proposal. Polymorphism: The ML/LCF/Hope Newsletter – Milner - 1984
5 A combinator-based compiler for a functional language – Hudak, Kranz - 1984
3 GRIP: A Parallel Graph Reduction Machine – Peyton-Jones, Clack, et al. - 1985
2 The functional abstract machine. Polymorphism: The ML/LCF/Hope Newsletter – Cardelli - 1983
2 A fixed-program machine for combinator expression evaluation – Jones, Muchnick - 1982
1 A Translation of Combinator Graphs into Machinecode – Augusteijn - 1984
1 reduction machine – Clarke, Gladstone, et al. - 1980
1 COBWEB: a combinator reduction engine – Shute, Osmon, et al. - 1985
1 An implementation of SASL – Turner - 1975