| Unrolling lists |
| Full text |
Pdf
(1.08 MB)
|
| Source
|
Conference on LISP and Functional Programming
archive
Proceedings of the 1994 ACM conference on LISP and functional programming
table of contents
Orlando, Florida, United States
Pages: 185 - 195
Year of Publication: 1994
ISBN:0-89791-643-3
Also published in ...
|
|
Authors
|
|
Zhong Shao
|
Princeton University and Department of Computer Science, Princeton University, 35 Olden Street, Princeton NJ
|
|
John H. Reppy
|
AT&T Bell Laboratories, 600 Mountain Avenue, Murray Hill, NJ
|
|
Andrew W. Appel
|
Department of Computer Science, Princeton University, 35 Olden Street, Princeton NJ
|
|
| Sponsors |
|
| Publisher |
|
| Bibliometrics |
Downloads (6 Weeks): 4, Downloads (12 Months): 30, Citation Count: 15
|
|
|
ABSTRACT
Lists are ubiquitous in functional programs, thus supporting lists efficiently is a major concern to compiler writers for functional languages. Lists are normally represented as linked cons cells, with each cons cell containing a car (the data) and a cdr (the link); this is inefficient in the use of space, because 50% of the storage is used for links. Loops and recursions on lists are slow on modern machines because of the long chains of control dependencies (in checking for nil) and data dependencies (in fetching cdr fields).We present a data structure for “unrolled lists”, where each cell has several data items (car fields) and one link (cdr). This reduces the memory used for links, and it significantly shortens the length of control-dependence and data-dependence chains in operations on lists.We further present an efficient compile-time analysis that transforms programs written for “ordinary” lists into programs on unrolled lists. The use of our new representation requires no change to existing programs.We sketch the proof of soundness of our analysis—which is based on refinement types—and present some preliminary measurements of our technique.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
William E. Aitken and John H. Reppy. Abstract value constructors. In A CM SIGPLAN Workshop on ML and its Applications, June 1992.
|
| |
2
|
|
| |
3
|
Andrew W. Appel and David B. MacQueen. Standard ML of New Jersey. In Martin Wirsing, editor, Third Int'l Syrup. on Prog. Lang. Implementation and Logic Programming, pages 1-13, New York, August 1991. Springer-Ver}ag.
|
 |
4
|
|
 |
5
|
|
 |
6
|
|
 |
7
|
|
| |
8
|
|
 |
9
|
|
| |
10
|
L. P. Deutsch. A lisp machine with very compact programs. In Proc. 3rd IJA CI, pages 697-703, 1973.
|
| |
11
|
Tim Freeman. Carnegie Mellon University, personal communication, 1992.
|
 |
12
|
|
| |
13
|
R. Greenblatt. Lisp machine progress report memo 444. TechnicMreport, A.i. Lab., M.I.T., Cambridge, MA, August 1977.
|
 |
14
|
|
 |
15
|
|
 |
16
|
Paul Hudak , Simon Peyton Jones , Philip Wadler , Brian Boutel , Jon Fairbairn , Joseph Fasel , María M. Guzmán , Kevin Hammond , John Hughes , Thomas Johnsson , Dick Kieburtz , Rishiyur Nikhil , Will Partain , John Peterson, Report on the programming language Haskell: a non-strict, purely functional language version 1.2, ACM SIGPLAN Notices, v.27 n.5, p.1-164, May 1992
[doi> 10.1145/130697.130699]
|
 |
17
|
|
| |
18
|
|
| |
19
|
|
| |
20
|
|
| |
21
|
|
| |
22
|
|
| |
23
|
|
 |
24
|
|
| |
25
|
D. Weinreb and D. Moon. Lisp machine manual. Technical report, Symolics Corp., Cambridge, Mass., 1981.
|
|