[plt-scheme] V4 request for thoughts on various question

From: Sam TH (samth at ccs.neu.edu)
Date: Mon Aug 4 12:39:34 EDT 2008

On Mon, Aug 4, 2008 at 12:33 PM, Robby Findler <robby at cs.uchicago.edu> wrote:
> On Mon, Aug 4, 2008 at 11:06 AM, Sam TH <samth at ccs.neu.edu> wrote:
>> On Mon, Aug 4, 2008 at 11:16 AM, Alan Watson <alan at alan-watson.org> wrote:
>>>>> The fact that let allow paralell bindings, do some folks take that
>>>>> fact and perform optimizations on multiple cpu boxes? Is it worth
>>>>> it?
>>>> The values are parallel, but the computation is not.  It's easy to
>>>> confuse the two, but it's a mistake.
>>> MPSCM[1] has a parallel let form.
>>> Eli, can you point me to language in the R5RS or R6RS that forbids
>>> interleaving the evaluation of the initializers in a standard let form? The
>>> R6RS just says, "The <init>s are evaluated in the current environment (in
>>> some unspecified order)". I think that allows the evaluation of the
>>> initializers to be interleaved or parallelized.
>> Looking at the R6RS, it appears that while the evaluation of arguments
>> may not be interleaved (the phrase is "consistent with some sequential
>> order"), that language is not used for `let'.  So I believe that the
>> evaluation of `let' bindings may be interleaved.
> Section 1.9 seems to be saying that let and the corresponding
> left-left-lambda are equivalent.

It does seem that way for `let'.  However, this leaves the status of
`let*', `letrec', etc up in the air.  I expect that this was an
oversight on the part of the R6RS editors, and that the binding forms
were intended to be required to be sequential.

Matthew, is that correct?

sam th
samth at ccs.neu.edu

Posted on the users mailing list.