[R6RS] multiple-value binding

dyb at cs.indiana.edu dyb at cs.indiana.edu
Wed Mar 1 20:35:57 EST 2006


To summarize, then, we have:

  Kent:     1 > 4 > 3 > 2
  Will:     1 > 4 > 3 > 2
  Matthew:  1 > 4 > 3 > 2
  Mike:     2 > 1, 3 > 1, 4 > 1
  Anton:    4 > 1 > 3 > 2

Given that neither 2 nor 3 is anyone's first choice and are no higher
than 3rd choice for four of us, I'm going to declare concensus that we
not consider them further.  So we're left with:

1. (let-values ([idspec expr] ...) body)

   idspec -> id | (id ...) | (id id ... . id)

   - with idspec -> id, id is bound to list of all expr values

4. (let ([idspec expr] ...) body)

   idspec -> id | vidspec
   vidspec -> (values . id) | (values id ...) | (values id id ... . id)

   - with idspec -> id, id is bound to expr's single return value
  
Three of us prefer #1 to #4; two prefer #4 to #1, giving the edge to #1.
On the other hand, none of us found #4 more objectionable than 2 or 3,
but one of us did find #1 more objectionable than 2 or 3, giving the
edge to #4.  Thus there is no clear concensus.

I'll leave this open for dicussion for a few more days, then call for
a vote if concensus doesn't materialize in one direction or another.
I will probably ask that you provide some sort of weighting with your
vote so that we can account for people who do or don't strongly prefer
one over the other.

Separately, with four in favor and none against, I'm declaring concensus
on including a let* version and excluding letrec and letrec* versions.

Kent



More information about the R6RS mailing list