[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Should letrec via syntax work within eval-when (expand load eval)?
From: |
Rob Browning |
Subject: |
Re: Should letrec via syntax work within eval-when (expand load eval)? |
Date: |
Mon, 05 Aug 2019 20:33:37 -0500 |
Mark H Weaver <address@hidden> writes:
> The 'letrec' form above is indeed invalid. As the R5RS states:
>
> One restriction on 'letrec' is very important: it must be possible
> to evaluate each <init> without assigning or referring to the value
> of any <variable>. If this restriction is violated, then it is an
> error. The restriction is necessary because Scheme passes
> arguments by value rather than by name. In the most common uses of
> 'letrec', all the <init>s are lambda expressions and the
> restriction is satisfied automatically.
Yeah, I'd read that originally, but not paid quite close enough
attention (obviously). Switching to a wrapper lambda worked just fine.
> This particular example happens to work when compiled by recent versions
> of Guile, but that's suboptimal. Ideally, we should report an error in
> this case.
Indeed, not strictly necessary, but would have been nice, so I'd have
realized more quicly that I was doing it wrong.
Thanks again for the help.
--
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4