[R6RS] multiple-value binding

dyb at cs.indiana.edu dyb at cs.indiana.edu
Wed Mar 1 21:11:02 EST 2006

I have a couple of comments and a proposal to restart the multiple-value
binding discussion.

Comment 1: With option 4, I'm concerned about named let.  Do we allow
"values" binding clauses when the let is named?  I don't particulary
like either answer.  If we don't then we're introducing an additional
distinction (other than the presence of the name) between the two kinds
of let.  If we do, there may be confusion about how the procedure bound
to the name is called.  In either case there's a sort of a discontinuity
between named and unnamed let.

Comment 2: With option 1, we have to come up with a suitable name for
the let* version, and I don't particularly like either let-values*,
which attaches the * to "values" rather than "let", or let*-values,
which is ugly.

Proposal: Go with option 4 and use the name mvlet rather than let-values.
This has three benefits.  (1) The name of the let* version is obvious and
natural: mvlet*.  (2) It addresses Anton's concern about "let-values"
being too long.  (3) Because it's shorter, the transition from let
to mvlet is a tad bit easier, in that it's less likely to necessitate
reformatting.  On the downside, "mvlet" isn't a legal Scrabble word,
and that will offend some people.  Also, it does not completely eliminate
the discontinuity between let and multiple-value let.


More information about the R6RS mailing list