[Scheme-reports] "unspecified values" Andy Wingo (19 May 2011 15:49 UTC)
Re: [Scheme-reports] "unspecified values" Alaric Snell-Pym (19 May 2011 16:11 UTC)
Re: [Scheme-reports] "unspecified values" Andy Wingo (19 May 2011 17:11 UTC)
Re: [Scheme-reports] "unspecified values" Alex Shinn (21 May 2011 05:04 UTC)
Re: [Scheme-reports] "unspecified values" Andy Wingo (21 May 2011 08:52 UTC)
Re: [Scheme-reports] "unspecified values" Jim Rees (21 May 2011 13:58 UTC)
Re: [Scheme-reports] "unspecified values" Andy Wingo (21 May 2011 15:10 UTC)
Re: [Scheme-reports] "unspecified values" John Cowan (21 May 2011 18:24 UTC)
Re: [Scheme-reports] "unspecified values" Andy Wingo (22 May 2011 13:28 UTC)
Re: [Scheme-reports] "unspecified values" Andre van Tonder (21 May 2011 15:19 UTC)
Re: [Scheme-reports] "unspecified values" Alex Shinn (21 May 2011 18:19 UTC)
Re: [Scheme-reports] "unspecified values" Alaric Snell-Pym (23 May 2011 11:34 UTC)
Re: [Scheme-reports] "unspecified values" John Cowan (23 May 2011 15:57 UTC)
Re: [Scheme-reports] "unspecified values" Alaric Snell-Pym (23 May 2011 11:20 UTC)

Re: [Scheme-reports] "unspecified values" Andre van Tonder 21 May 2011 15:13 UTC

On Fri, 20 May 2011, Alex Shinn wrote:

> On Thu, May 19, 2011 at 10:10 AM, Andy Wingo <wingo@pobox.com> 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@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports