On Thu, May 19, 2011 at 10:10 AM, Andy Wingo <wingo@x> wrote:
Unfortunate.
I do not agree with the note that permitting any number of values to be
returned from `set!' et al is incompatible. It is not incompatible with
implementations, as it widens the scope of what they may do. It is not
incompatible with existing programs, as I do not expect existing
implementations to switch -- most will do what they have been doing.
Yes, it is incompatible with existing programs. One common example is:
(define-syntax time
((time expr)
(let* ((start (current-time))
(res expr))
(report-time 'expr start (current-time))
res)))
This will work fine for arbitrary expressions, including
*set! and I/O operations, so long as they return a single
value as they do in R5RS.