Valerio Bellizzomi wrote:
> On 09/07/2008, at 23.16, David-Sarah Hopwood wrote:
>> Jonathan S. Shapiro wrote:
>>> I have just realized that the specification of DO is not what we
>>> wanted. I followed the Scheme specification of DO here. You will find on the
>>> web statements in various places that Scheme DO implements DO-UNTIL. Those
>>> statements are incorrect. What Scheme DO implements is in fact
>>> WHILE-NOT. That is: a Scheme DO loop may not perform any executions of
>>> the body at all.
>>>
>>> I tend to believe that there are good uses for all of the following
>>> constructs:
>>>
>>>   WHILE       perform body while test remains true
>>>   WHILE-NOT   perform body while test remains false
>>>   DO-UNTIL    perform body until test becomes true, running at least
>>>               once.
>>>
>>> Of the three, I believe that WHILE-NOT is the least commonly useful,
>>> and that it is trivially subsumed by WHILE.
>> C-family languages have DO..WHILE rather than DO..UNTIL, of course.
>> The (small) advantages of this are:
>>  - familiarity to C, C++, Java and C# programmers,
>>  - changing a loop between the WHILE and DO..WHILE forms does not
>>    require inverting the condition.
> 
> Whatever it is named, we need a construct that guarantees at least one
> execution of the body, because the value of the loop condition is set
> inside the body.

I agree. I also think that something equivalent to C's 'break'
(as used to break from a loop) and 'continue' are needed.

However, I would seriously consider *requiring* Java-style labelled
break and continue, without any default for which loop is referred to.

-- 
David-Sarah Hopwood
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to