[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
expansion of LETREC (hmmm)
Date: Monday, 7 April 1986 16:31-EST
From: Gerald Jay Sussman <GJS%OZ.AI.MIT.EDU at XX.LCS.MIT.EDU>
To: dyb%indiana.csnet at CSNET-RELAY.ARPA
cc: rrrs-authors at MC.LCS.MIT.EDU
Re: expansion of LETREC (hmmm)
ReSent-Date: Mon 7 Apr 86 20:55:41-EST
ReSent-From: Eddie Gornish <DFUSER.EHG@XX.LCS.MIT.EDU>
ReSent-To: david@OZ.AI.MIT.EDU
ReSent-Message-ID: <12197057091.48.DFUSER.EHG@XX.LCS.MIT.EDU>
...they
felt that LET, LET* and LETREC formed (or should form) a linear
sequence, each more powerful (in a sense) than the last.
I think that that is wrong. LET is more powerful than LET* because
one can make LET* by nesting LETs but you cannot make LET easily from
LET*. Sequential methods are often more convenient than parallel
ones, but they are inessential. On the other hand, your
implementation of LETREC:
(letrec ((x v) ...) e ...)
=>
(let ((x 'any) ...) (set! x v) ... e ...)
certainly looks pretty good to me. The question is whether we want to
specify the order of assignment as being the same as the order of the
expressions in the LETREC. I see the same problems arising with
internal definitions (being just a syntax for a LETREC form). I
suppose that I can be moved either way.
What the hell does this mean?