comp.lang.ada
 help / color / mirror / Atom feed
From: Maciej Sobczak <see.my.homepage@gmail.com>
Subject: Re: Containers - nontrivial element access
Date: Tue, 02 Oct 2007 14:02:19 -0700
Date: 2007-10-02T14:02:19-07:00	[thread overview]
Message-ID: <1191358939.031798.177670@k79g2000hse.googlegroups.com> (raw)
In-Reply-To: <1191343071.685478.146710@19g2000hsx.googlegroups.com>

On 2 Pa , 18:37, Matthew Heaney <mhea...@on2.com> wrote:

> V : Person_Vectors.Vector;
>
> declare
>    procedure Process_X (PX : in out Person) is
>       procedure Process_Y (PY : in out Person) is
>          SX : constant Salary_Type := PX.Salary;
>       begin
>          PX.Salary := PY.Salary;
>          PY.Salary := SX;
>       end;
>    begin
>       V.Update_Element (Y, Process_Y'Access);
>    end;
> begin
>    V.Update_Element (X, Process_X'Access);
> end;

I have mixed feelings about this example.

I like it, because it solves the problem without requiring any
additional variable.
I don't like it, because it imposes some artificial assymetry (one of
the procedures has to be nested) where the problem is strictly
symmetrical.

OK, this assymetry stuff is nit-picking. I accept this as a valid
solution, even though it is not even close in readability to my
initial C++ example.

BTW - above, PX plays the role of that additional variable that is
sneaked around to the second procedure. Here it just pretends to not
exist by taking the form of a parameter in the outer procedure. I
don't think there is a reasonable way to avoid it.

--
Maciej Sobczak * www.msobczak.com * www.inspirel.com




  reply	other threads:[~2007-10-02 21:02 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-01 21:55 Containers - nontrivial element access Maciej Sobczak
2007-10-01 23:52 ` Alex R. Mosteo
2007-10-02 16:40   ` Matthew Heaney
2007-10-02 23:16     ` Alex R. Mosteo
2007-10-02 20:47   ` Maciej Sobczak
2007-10-02 23:23     ` Alex R. Mosteo
2007-10-02  0:39 ` Jeffrey R. Carter
2007-10-02 16:44   ` Matthew Heaney
2007-10-03  0:20     ` Jeffrey R. Carter
2007-10-03 19:40       ` Maciej Sobczak
2007-10-03 19:56         ` Matthew Heaney
2007-10-03 20:21           ` Dmitry A. Kazakov
2007-10-03 22:37             ` Matthew Heaney
2007-10-04  8:06               ` Dmitry A. Kazakov
2007-10-03 22:02         ` Jeffrey R. Carter
2007-10-04  0:16         ` Robert A Duff
2007-10-07  8:41           ` Jacob Sparre Andersen
2007-10-11 19:15             ` Robert A Duff
2007-10-14  4:59               ` Jacob Sparre Andersen
2007-10-14  7:24                 ` Dmitry A. Kazakov
2007-10-14 13:49                   ` Georg Bauhaus
2007-10-14 15:07                     ` Dmitry A. Kazakov
2007-10-02 20:50   ` Maciej Sobczak
2007-10-03  0:22     ` Jeffrey R. Carter
2007-10-03  8:26       ` Dmitry A. Kazakov
2007-10-03 18:49         ` Jeffrey R. Carter
2007-10-03 19:09           ` Matthew Heaney
2007-10-03 19:15           ` Simon Wright
2007-10-03 19:48             ` Maciej Sobczak
2007-10-03 19:58             ` Matthew Heaney
2007-10-03 19:35           ` Dmitry A. Kazakov
2007-10-02  2:34 ` Randy Brukardt
2007-10-02 16:47   ` Matthew Heaney
2007-10-02  7:23 ` Dmitry A. Kazakov
2007-10-02 16:37 ` Matthew Heaney
2007-10-02 21:02   ` Maciej Sobczak [this message]
2007-10-02 22:20     ` Matthew Heaney
2007-10-03 19:59       ` Maciej Sobczak
2007-10-03 22:55         ` Matthew Heaney
2007-10-04  0:22         ` Robert A Duff
2007-10-04 13:01         ` Georg Bauhaus
2007-10-04 14:01           ` Matthew Heaney
2007-10-04 21:58           ` Matthew Heaney
replies disabled

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