On 11/10/2015 22:33, Tomas Hajny wrote:
On Sun, October 11, 2015 22:48, Sven Barth wrote:
  .
  .
That "then" is a great idea! That would definitely not break anything and
it would make sense indeed:

=== code begin ===
while bool do
   foo
then
   bar;

repeat
   foo;
until bool then
   bar;
=== code end ===
I'm afraid that I got lost in this discussion, but what exactly would be
the supposed semantic difference between the behaviour compared to
situation when there was a semicolon instead of 'then' there?

You mean compared to the otherwise solution?

The following is currently valid code:
case a of
  1: write;
  2: while a > 0 do dec(a)   // no semicolon
  otherwise
     write('a was neither 1 nor 2');
end;

This code would continue to compile, but it would change meaning/behaviour.
So if somebody has code like that, in a million line project, which fails after otherwise was introduced, then it could be a long search for why it fails. (Easy to fix once found, but hard to find)

Besides "then" makes more sense (as in reading it as english description).

Both else/otherwise, to me read as: If the while block before was not executed at all.
In otherwords
  while a > 0 do write
  otherwise halt;
reads to me "halt" is an alternative to the "while". It gets executed if the while was never executde (a was already <= 0 when while was reached first)

"then" in english may mean "after that" and that is what happens here. After the while do something.
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to