Title
Unrolling lists
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.
Year
DOI
Venue
1994
10.1145/182409.182453
LISP and Functional Programming
Keywords
DocType
Volume
unrolled list,efficient compile-time analysis,data item,functional program,functional language,car field,Unrolling list,cons cell,data dependency,cdr field,data structure
Conference
VII
Issue
ISSN
ISBN
3
1045-3563
0-89791-643-3
Citations 
PageRank 
References 
20
1.50
13
Authors
3
Name
Order
Citations
PageRank
Zhong Shao189768.80
John H. Reppy289984.36
Andrew W. Appel32599292.71