Re: [Scheme-reports] Draft 3 Comments: Chapter 4
Aaron W. Hsu 27 Jul 2011 23:13 UTC
On Wed, 27 Jul 2011, John Cowan wrote:
> Denis Washington scripsit:
>
>> Thinking about it, leaving this unspecified makes sense as one couldn't
>> use "when" and "unless" to return a value from a procedure anyway
>> without risking an unspecified return value (if the test evaluates to #f
>> or #t, respectively).
>>
>> On the other hand, "begin" in an expression context also a sole
>> side-effect construct (otherwise, all expressions except the last in a
>> "begin" form would be useless) and still returns the last expression's
>> result. Given that "when" and "unless" are very similar, I find it to be
>> pretty intuitive if they have the same behavior. I'm undecided.
>
> The difference is that BEGIN can have a value if its last argument does, but
> you can't ever rely on WHEN or UNTIL having a value, so you can only
> use it for effect portably. That being so, it might as well return
> an unspecified value in all cases.
This is news to me. The semantics I expect from WHEN and UNTIL are that they
return the value of the last expression in their bodies. I am aware of no
reason to not do this.
Aaron W. Hsu
--
Programming is just another word for the lost art of thinking.
_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports