Learn More
SUMMARY The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide(More)
SUMMARY This document contains non-normative appendices to the Revised 6 Report on the Algorithmic Language Scheme. These appendices contain advice for users and suggestions for implementors on issues not fit for standardization, in particular on platform-specific issues. This document frequently refers back to the Revised 6 Report on the Algorithmic(More)
The IEEE/ANSI standard for Scheme requires implementations to be <i>properly tail recursive</i>. 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(More)
Consider the problem of converting decimal scientific notation for a number into the best binary floating point approximation to that number, for some fixed precision. This problem cannot be solved using arithmetic of any fixed precision. Hence the <italic>IEEE Standard for Binary Floating-Point Arithmetic</italic> does not require the result of such a(More)
This paper describes a modified form of Kohlbecker's algorithm for reliably hygienic (capture-free) macro expansion in block-structured languages, where macros are source-to-source transformations specified using a high-level pattern language. Unlike previous algorithms, the modified algorithm runs in linear instead of quadratic time, copies few constants,(More)
Optimizing compilers for higher-order languages need not be terribly complex. The problems created by non-local, non-global variables can be eliminated by allocating all such variables in the heap. Lambda lifting makes this practical by eliminating all non-local variables except for those that would have to be allocated in the heap anyway. The eliminated(More)
If a fixed exponentially decreasing probability distribution function is used to model every object's lifetime, then the age of an object gives no information about its future life expectancy. This <i>radioactive decay</i> model implies there can be no rational basis for deciding which live objects should be promoted to another generation. Yet there remains(More)
The aggregate update problem in functional languages is concerned with detecting cases where a functional array or record update operation can be implemented destructively in constant time. Previous work on this moblem has assumed ed a fixed order of evaluation of expressions. In this paper we devise a practical analysis, for first order strict functional(More)
Although macros are even older than Lisp, Scheme has just become the first block-structured programming language to support a reliable macro system. This macro system is described in the appendix to the <i>Revised</i><sup>4</sup> <i>Report on the Algorithmic Language Scheme</i>, which appeared in the previous issue of <i>Lisp Pointers.</i> This issue(More)