ACM Home Page
Please provide us with feedback. Feedback
Proper tail recursion and space efficiency
Full text PdfPdf (1.41 MB)
Source Conference on Programming Language Design and Implementation archive
Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation table of contents
Montreal, Quebec, Canada
Pages: 174 - 185  
Year of Publication: 1998
ISBN:0-89791-987-4
Also published in ...
Author
William D. Clinger  Northeastern University
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 8,   Downloads (12 Months): 94,   Citation Count: 29
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/277650.277719
What is a DOI?

ABSTRACT

The IEEE/ANSI standard for Scheme requires implementations to be properly tail recursive. This ensures that portable code can rely upon the space efficiency of continuation-passing style and other idioms. On its face, proper tail recursion concerns the efficiency of procedure calls that occur within a tail context. When examined closely, proper tail recursion also depends upon the fact that garbage collection can be asymptotically more space-efficient than Algol-like stack allocation.Proper tail recursion is not the same as ad hoc tail call optimization in stack-based languages. Proper tail recursion often precludes stack allocation of variables, but yields a well-defined asymptotic space complexity that can be relied upon by portable programs.This paper offers a formal and implementation-independent definition of proper tail recursion for Scheme. It also shows how an entire family of reference implementations can be used to characterize related safe-for-space properties, and proves the asymptotic inequalities that hold between them.


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.

AFL95
 
App92
 
AS96
Andrew W. Appel and Zhong Sham. An empirical and analytic study of stack vs. heap cost for languages with closures. Journal of Functional Programming, 6(1):47-74, 1996.
Bak95
Boe93
CH94
Cha88
Cli84
 
CLR90
 
FH95
Fis72
FSDF93
 
GW95
Han90
 
Hew77
Carl Hewitt. Viewing control structures as patterns of passing messages. Artificial Intelligence, 8:323-364, 1977.
 
IEE91
 
KCR98
Richard Kelsey, William Clinger, and Jonathan Rees (eds.). Revised5 report on the algorithmic language Scheme. ftr://ftr. nj. nee. com/pub/kel sey/rSrs, ps, February 1998.
KKsR+86
 
Knu73
 
Lig90
MFH95
 
MH97
 
NN92
 
Que96
Ram94
 
Ram97
John D. RamsdeIl. The tail recursive SECD machine. To appear, 1998.
 
Ser97
Manuel Serrano. Bigloo user's manual. Part of the Bigloo 1.9 distribution available via httr: / / cuiww~, uni ge. ch/~e rrano/b igloo, html, 1997.
SF96
 
Sis97
Jeffrey Mark Siskind. Stalin - a STAtic Language ImplementatioN. Software available via http://w~, neci .nj .nec. com/homepages/qobi/, 1997.
 
SS75
 
SS76
 
SS78a
 
SS78b
Guy L. Steele, Jr. and Gerald Jay Sussman. The revised report on SCHEME. Artificial Intelligence Memo 452, Massachusetts Institute of Technology, Cambridge~ MA, January 1978.
 
Ste76
Ste77
 
Ste78
TT94
Wan80
 
WF78
Mitchell Wand and Daniel P. Friedman. Compiling larnbda expressions using continuations and factorizations. Journal of Computer Languages, 3:241-263, 1978.

CITED BY  30