comp.lang.ada
 help / color / mirror / Atom feed
From: madmats@elma.epfl.ch (Mats Weber)
Subject: Parameter passing mechanisms
Date: 23 Feb 89 13:08:02 GMT	[thread overview]
Message-ID: <890223140802.21a00384@elcc.epfl.ch> (raw)

Tim Harrison <harrison@software.org> writes:

>The program in question is not erroneous.  LRM 6.2(13) says that "the value
>of the formal is undefined after updating the actual other than by updating
>formal."  In the example program the actual is A_Vector and the formals are
>V and W. The example program is only updating the formal (W) not the actual
>(A_Vector)....

My example was:

>    procedure Is_This_Program_Erroneous is
>
>       type Vector is array (1..5) of Float;
>
>       A_Vector : Vector := (0.35, 0.67, 1.8, 2.0, 7.7);
>
>       procedure Add (V : in Vector; W : in out Vector) is
>       begin
>          for I in 1..5 loop
>             W(I) := V(I) + W(I);
>          end loop;
>       end Add;
>
>    begin
>       Add(A_Vector, A_Vector);
>    end Is_This_Program_Erroneous;

There are two points:

  1) This program is not erroueous according to the LRM because its effect does
     not depend on whether V and W are passed by reference or by copy.
     6.2(13) is a NOTE and according to LRM 1.2(7), notes are not part of the
     standard. The problem with 6.2(13) is that it is not a consequence of
     other rules.

  2) 6.2(13) applies here because if V and W are passed by reference, the
     actual A_Vector is updated by the assignment W(1) := V(1) + W(1); other
     than by updating the formal V, which makes V(2..5) undefined according
     to 6.2(13).
     (See 6.2(7): "... by arranging that every use of the formal parameter
     be treated as a use of the associated actual parameter...").

Mats Weber
Swiss Federal Institute of Technology
EPFL DI LITh
1015 Lausanne
Switzerland

e-mail : madmats@elma.epfl.ch

             reply	other threads:[~1989-02-23 13:08 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1989-02-23 13:08 Mats Weber [this message]
  -- strict thread matches above, loose matches on Subject: below --
1989-02-22 12:28 Parameter passing mechanisms Tim Harrison
1989-02-20 16:38 Mats Weber
replies disabled

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