comp.lang.ada
 help / color / mirror / Atom feed
From: ok@quintus.UUCP (Richard A. O'Keefe)
Subject: Re: Side effect
Date: 9 Apr 88 06:58:07 GMT	[thread overview]
Message-ID: <863@cresswell.quintus.UUCP> (raw)
In-Reply-To: 14425@uflorida.cis.ufl.EDU

In article <14425@uflorida.cis.ufl.EDU>, lius@beach.cis.ufl.edu (Scott Liu) writes:
>   ID: INTEGER := 0;
>   function NEXT return INTEGER is
>   begin
>     ID := ID+1;
>     return ID;
>   end;
> declare
>   type BIG is record X: INTEGER := NEXT; end record;  -- ???
>   A: array (1..5) of BIG;                             -- ???

{A is (1,2,3,4,5), not the expected (1,1,1,1,1).}

This is the way ADA is generally supposed to work.  For example,
	X, Y: INTEGER := NEXT;
is defined to be equivalent to
	X: INTEGER := NEXT;
	Y: INTEGER := NEXT;
In general, what matters is not how many copies of an initialiser you
write, but how many things are initialised:  an expression is evaluated
for _each_ variable it is used to initialise.  It's not the way I'd prefer
it, but at least it is consistent and predictable.

LRM 3.7 paras 5 and 11.
LRM 3.2.1 (note para 6).

      reply	other threads:[~1988-04-09  6:58 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1988-04-09  2:05 Side effect Scott Liu
1988-04-09  6:58 ` Richard A. O'Keefe [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox