[r6rs-discuss] [Formal] Rename named `let'

Eli Barzilay eli at barzilay.org
Fri Jan 26 08:28:51 EST 2007


On Jan 26, Michael Sperber wrote:
> 
> ... which is not making any positive suggestions.  Since still don't
> have any idea what you think I suggested, it's hard for me to offer
> a precise comment.  All I suggested was that

Retry: I read this:

> the expansion for "named letrec" be identical to what's currently
> the expansion for "named let."        [0]

as literally saying that the expansion of

  (letrec loop ([x x]) x)               [1]

is the same as the expansion of

  (let loop ([x x]) x)                  [2]

and if that's the same named let I know, then it's the same as

  (let ([x x]) x)                       [3]

and we get to the conclusion that:

  (letrec loop ([x x]) x)               [1]

is not the same as

  (letrec ([x x]) x)                    [4]

which, IMO, is a Really Bad Thing.


> Sure the jump you describe is "harmless", but it's only harmless in
> circumstances I've never seen in the wild.  Why would you write a
> named let if the name doesn't occur in the body?

What I meant was that adding a name to a `let' (moving from [3] to
[1]) does not change the meaning of the expression.  But adding a name
to a `letrec' (moving from [4] to [1]) does -- at least as far as I
can tell from [0].

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                  http://www.barzilay.org/                 Maze is Life!



More information about the r6rs-discuss mailing list