[Oberon] FOR loop variable

Ala'a Mohammad amalawi at gmail.com
Thu Mar 16 19:52:25 CET 2023

Hi Paul,

Thanks alot for your time and appreciate the detailed explanation.


On Wed, Mar 15, 2023 at 2:21 AM Paul Reed <paulreed at paddedcell.com> wrote:

> Hi Ala'a,
> On 2023-03-14 20:33, Ala'a Mohammad wrote:
> > I need help to understand the need to declare FOR loop stepping's
> > variable. (i.e x in FOR x := .....). I do not intend to change the
> > language, but The question arises since this variable always (in my
> > short exposure to Oberon-2) is scoped within the FOR loop body. And
> > was trying to answer the question:
> > Is it good design to have FOR implicitly declare its variable (It is
> > not a big issue to declare VARiables), or Is it from the point of
> > uniformity to have all variables declared with VAR?
> Thanks for a great question!
> FOR in the language report is defined to be equivalent to an assignment
> of the control variable (and the limit, in the case of Oberon-2; see
> below) followed by a WHILE loop containing the statement sequence and a
> fixed increment/decrement of the control variable.
> Therefore FOR *does not* introduce another scope, unlike in some other
> languages.
> And at first sight it seems there's nothing special about the control
> variable: as you say, for uniformity, it may be declared (and re-used)
> just like any other variable (at the beginning of the scope, or
> globally, which makes its type relatively easy to find).
> However, that the statement sequence must be executed "a fixed number of
> times", so implementations will typically make the control variable
> read-only (preventing assignments to it) inside the FOR. So it's a *bit*
> special. :)
> Some implementations might not necessarily protect the "fixed number of
> times", for example if they don't assign the limit expression to a
> temporary variable at the start of the loop. YMMV. Literally. :)
> HTH,
> Paul
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20230316/e53ff048/attachment.html>

More information about the Oberon mailing list