On Mar 28, 2007, at 5:25 PM, Joe Marshall wrote:
On 3/28/07, Abdulaziz Ghuloum <[EMAIL PROTECTED]> wrote:
Do you mean that an implementation should be allowed to treat E1
as E2
or E3 instead of E4?
[examples deleted]
Yes.
Implementations are already allowed to perform that optimization.
Read ``Fixing Letrec'' for the details.
http://www.cs.indiana.edu/~dyb/pubs/fixing-letrec.pdf
@article{1103776,
author = {Oscar Waddell and Dipanwita Sarkar and R. Kent Dybvig},
title = {Fixing Letrec: A Faithful Yet Efficient Implementation of
Scheme's Recursive Binding Construct},
journal = {Higher Order Symbol. Comput.},
volume = {18},
number = {3-4},
year = {2005},
issn = {1388-3690},
pages = {299--326},
doi = {http://dx.doi.org/10.1007/s10990-005-4878-3},
publisher = {Kluwer Academic Publishers},
address = {Hingham, MA, USA},
}
> One advantage of this is that it would be much easier to create a
> purely
> functional subset of Scheme.
How do you do the following functionally?
(letrec ([f (g (lambda () f))])
f)
With a lot of rewriting so that f can take a thunked version of itself
as an argument.
I didn't say f was a procedure.
Aziz,,,
_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss