2005
DOI: 10.1007/s10990-005-4878-3
|View full text |Cite
|
Sign up to set email alerts
|

Fixing Letrec: A Faithful Yet Efficient Implementation of Scheme's Recursive Binding Construct

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
8
0

Year Published

2006
2006
2013
2013

Publication Types

Select...
4
4

Relationship

4
4

Authors

Journals

citations
Cited by 13 publications
(8 citation statements)
references
References 8 publications
0
8
0
Order By: Relevance
“…The first pass records source information used for debugging and profiling. The next pass places validity checks for variable references bound by letrec and letrec* [13,24]. The next pass is the source optimizer [22] and can be run one or more times or not at all, depending on the options set in the compiler.…”
Section: Workings Of the Existing Chez Scheme Compilermentioning
confidence: 99%
See 1 more Smart Citation
“…The first pass records source information used for debugging and profiling. The next pass places validity checks for variable references bound by letrec and letrec* [13,24]. The next pass is the source optimizer [22] and can be run one or more times or not at all, depending on the options set in the compiler.…”
Section: Workings Of the Existing Chez Scheme Compilermentioning
confidence: 99%
“…The next pass is the source optimizer [22] and can be run one or more times or not at all, depending on the options set in the compiler. A pass for handling letrec and letrec* [13,24] is run at least once and is run after each run of the source optimizer. After this, either the interpreter is invoked to interpret the program or the back-end compiler is invoked to finish compilation and either execute the resulting code or write the machine code to the file system.…”
Section: Workings Of the Existing Chez Scheme Compilermentioning
confidence: 99%
“…Next, we partition the bindings into strongly connected components, producing one letrec expression for each [9,19]. g and h are mutually recursive, and, thus, must be bound by the same letrec expression, while f and q each get their own.…”
Section: Examplementioning
confidence: 99%
“…For example, let is not included among the core forms because expanding let to an application of a direct procedure does not lose any information, and we expect that optimizing compilers know how to treat them efficiently. On the other hand, letrec is included because expanding letrec to the equivalent set of bindings and assignments loses information, and would therefore inhibit certain optimizations (Waddell et al 2005).…”
Section: Core Formsmentioning
confidence: 99%