comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Array Help?
Date: Wed, 29 Feb 2012 18:15:52 -0500
Date: 2012-02-29T18:15:52-05:00	[thread overview]
Message-ID: <wccty29s02f.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: t79ae6hdlfwv.1m8cryc7jgl32.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:

> On Wed, 29 Feb 2012 13:24:10 -0500, Robert A Duff wrote:
>> That will raise C_E.

No, Assert_Failure.

>...IMHO, that's a language design flaw -- inside
>> Foo, Param'First ought to be 1.
>
> Nope. Consider index of an enumeration type.

I'm talking about the example where the array is (1) unconstrained,
(2) the index type is Positive, and (3) the programmer wants all
array objects A to have A'First = Positive'First.  Nothing to do
with enumeration types.

Ada allows you to fix 'First and 'Last, and it allows you to let
both vary.  What's missing is a way to fix 'First, but allow
'Last to vary.  I sort of implied that a predicate should do that,
but that's wrong.  There should be SOME way to do it.  And for
completeness, I'd allow fixing 'Last, but allowing 'First to vary,
although that's much less useful.

Ada 9X proposed a solution based on discriminated arrays.

When an array index is an enum, it's almost always constrained
(i.e. 'First and 'Last are both fixed), slices are usually
meaningless, and of course 1 isn't a value of any enum type.

I'm certainly not saying "all arrays should start at 1".  I'm saying
"there should a way to declare an array type such that all objects of
that type start at 1 (or any other value) while allowing 'Last to
vary".

- Bob



  reply	other threads:[~2012-02-29 23:15 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-28 20:15 Array Help? Will
2012-02-28 20:47 ` Ludovic Brenta
2012-02-28 22:11   ` Simon Wright
2012-02-28 23:09     ` Will
2012-02-29  0:24   ` Adam Beneschan
2012-02-28 20:50 ` Gautier write-only
2012-02-28 21:33 ` Simon Wright
2012-02-29  0:27   ` Adam Beneschan
2012-02-29  8:00     ` Simon Wright
2012-02-29  8:48       ` Simon Wright
2012-02-29  0:22 ` Adam Beneschan
2012-02-29 16:09   ` Robert A Duff
2012-02-29 16:50     ` Ludovic Brenta
2012-02-29 18:24       ` Robert A Duff
2012-02-29 19:45         ` stefan-lucks
2012-02-29 20:45           ` Jeffrey Carter
2012-02-29 21:27             ` stefan-lucks
2012-02-29 23:06           ` Robert A Duff
2012-03-02 13:45             ` stefan-lucks
2012-03-07 23:58             ` Randy Brukardt
2012-03-08 11:20               ` stefan-lucks
2012-03-09  2:02                 ` Randy Brukardt
2012-03-09  8:48                   ` stefan-lucks
2012-03-09 21:10                     ` Randy Brukardt
2012-03-15  2:55                     ` BrianG
2012-03-15  7:46                       ` stefan-lucks
2012-02-29 20:07         ` Dmitry A. Kazakov
2012-02-29 23:15           ` Robert A Duff [this message]
2012-03-01  8:54             ` Dmitry A. Kazakov
2012-03-01 14:06               ` Robert A Duff
2012-02-29 20:47         ` Simon Wright
2012-02-29 22:23           ` Robert A Duff
2012-02-29 23:27             ` Robert A Duff
2012-03-01  0:53               ` Adam Beneschan
2012-03-01  7:16               ` Ludovic Brenta
2012-03-01 14:03                 ` Robert A Duff
2012-03-08  0:11                   ` Randy Brukardt
2012-03-08  0:08               ` Randy Brukardt
2012-02-29 23:30             ` Simon Wright
2012-02-29 18:35     ` Jeffrey Carter
2012-02-29 22:59       ` Robert A Duff
2012-02-29 23:51         ` Jeffrey Carter
2012-03-01  3:03           ` Robert A Duff
2012-02-29 20:40     ` Adam Beneschan
replies disabled

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