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

Reply via email to