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).
prev parent 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