Scheme language standardization process
On Fri, 20 May 2011, Alex Shinn wrote:
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.
Arbitrary expressions do not return a single value in R5RS, so I would say the above macro is buggy even in R5RS. It fails for something as simple as (time (values 1 2)) /in R5RS/. So your example is IMO invalid, unless what you really want is to return to R4RS. I wonder sometimes... ;)
_______________________________________________ Scheme-reports mailing list Scheme-reports@x http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports