comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Containers - nontrivial element access
Date: Wed, 03 Oct 2007 20:22:22 -0400
Date: 2007-10-03T20:22:22-04:00	[thread overview]
Message-ID: <wcc7im33f0h.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 1191441598.702440.314410@22g2000hsm.googlegroups.com

Maciej Sobczak <see.my.homepage@gmail.com> writes:

> On 3 Pa , 00:20, Matthew Heaney <mhea...@on2.com> wrote:
>
>> > 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.
>>
>> The number of "additional variables" is exactly the same in both the C+
>> + and Ada examples.  The only difference is how the variables are
>> named.
>
> No. The difference is in whether the subprogram's protocol is fully
> described by its signature.
>
> Your nested procedures have the signature that gives provisions for
> one parameter only. The other one is sneaked in bypassing the
> signature (so that the protocol is wider than the signature and this
> is not explicit). This hinders analysis.

I don't agree.  In Ada, and many other languages, you have to get used
to nested subprograms, and the fact that they can see more-global
stuff.  It's really not a big deal, so long as you keep them small.

> I can even think about coding standards that explicitly forbid
> subprograms that use anything other than what is in their signature
> (except for the main subprogram, which might need to access some
> library-level objects).

I can imagine that, too.  In fact I've seen it.  But it's not really a
good idea.  You can't reasonably do iterators, for example, without some
sort of nested procedures.

> Your solution requires some dose of liberal thinking, which I'm not
> easily willing to accept in the language that boasts high-integrity
> mindset. ;-)

- Bob



  parent reply	other threads:[~2007-10-04  0:22 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
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 [this message]
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