Doug Chamberlin schrieb:

Must confess, I feel "arr:[0..end] of " makes more sense to me than use of "var" or "..]" The latter suggests something forgotten or a typo.

I agree that just leaving out the ending limit is against the spirit of Pascal.

I can live with the syntax of MyArray:[0..var] or MyArray:[0..end] but I'd prefer a syntax that does not use a word, such as MyArray:[0..*] or MyArray:[0..?]. That way there is no confusion about a user-defined word and the use of the currently reserved words is not changed. In other words, this is a situation that is exactly why we have punctuation and not the cobol-ish "Declare MyArray to be from 0 to end of TSomeType"!

Since we already have an (dynamic) array syntax without any "[...]" clause, I'd choose an way in between "array", "array[rangetype]" and "array[from..to]", e.g. array[], array[const] or array[*] for arrays with automatic bounds. In detail the "const" keyword is used similarly in argument lists "array of const".

As already mentioned, I do not favor a [from..?] syntax, because then it also should be possible to construct [?..to] arrays, for syntax symmetry. When the array bounds are not named or literal constants, a For loop will have to look like:
  for i := low(MyArray) to high(MyArray) do
so that it doesn't matter which exact values low() and high() really represent in code. That's why IMO a fixed lower bound of zero does no harm. Any other loops, with fixed bounds, will either fail at compile time or - even worse - produce wrong results, when the bounds are changed in the array declaration but not in code.

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to