From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Surprise in array concatenation
Date: 05 Sep 2005 17:48:14 -0400
Date: 2005-09-05T17:48:14-04:00 [thread overview]
Message-ID: <wccoe77nq3l.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: Qf2dnUIZUaeLGoreRVn-2g@comcast.com
tmoran@acm.org writes:
> >I completely agree with the marginal utility of other-than-1 least
> >array indices.
> I strongly disagree. While not dirt common, other 'firsts in
> declarations do occur. -n .. +n comes to mind.
Heh? "Marginal utility" means the same as "not dirt common"!
My suggestion was that the language should _allow_ the programmer to fix
the lower bound for an array type. And/or the upper bound. In Ada, you
can fix both or neither -- but not one or the other.
Anyway, you'd still be allowed to do your -n..+n thing, in the rare
cases where that's useful.
>... If you are going to
> handle slices, you have to assume 'first /= 1 anyway,...
No, I don't. ;-)
Slices should slide to the lower bound. The Ada rule breaks
abstraction:
procedure P(X: String) is
begin
...
end P;
Y: String := "Hello, world!";
P(Y(3..4));
Inside the body of P, X is just a String -- we don't (or shouldn't) know
that it's a substring of Y. So we can't possibly make any sense (inside
P) of the fact that X'First = 3. Index 3 from what?
If I ran the circus, X'First would be 1.
>... so you're not losing
> much by allowing it in declarations. Using 'first instead of 1 also makes
> it simple to change between integer and enumeration value indexes. The
> way Ada.Text_IO.Get_Line (et al) returns Last, which works even if you
> passed it a slice, has surely prevented many an error as compared to other
> languages which would likely return a count (since "all arrays start at
> x") and depend on the programmer to do any arithmetic needed to turn it
> into an index. And if you started all arrays at 1,
I wouldn't insist on starting _all_ arrays at 1, but I think it makes
sense for _many_ arrays, including String.
>... you probably wouldn't
> allow the idiom
> subtype cards is string(1 .. 80);
> subtype sequence is range 73 .. 80;
> ...
> if card(sequence) = (sequence=>' ') then
Why not? In Ada, "=" doesn't care about the bounds -- just the length.
- Bob
next prev parent reply other threads:[~2005-09-05 21:48 UTC|newest]
Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-01 3:16 Surprise in array concatenation Gene
2005-09-01 7:55 ` Dmitry A. Kazakov
2005-09-01 8:02 ` Florian Weimer
2005-09-01 11:48 ` Georg Bauhaus
2005-09-01 12:02 ` Lutz Donnerhacke
2005-09-01 13:01 ` Georg Bauhaus
2005-09-01 15:54 ` Florian Weimer
2005-09-01 16:09 ` Robert A Duff
2005-09-05 8:38 ` Jean-Pierre Rosen
2005-09-05 23:52 ` Robert A Duff
2005-09-06 9:03 ` Jean-Pierre Rosen
2005-09-07 17:57 ` adaworks
2005-09-07 20:01 ` Robert A Duff
2005-09-08 8:08 ` Jacob Sparre Andersen
2005-09-07 22:46 ` Jeffrey Carter
2005-09-08 4:43 ` Simon Wright
2005-09-08 10:36 ` Georg Bauhaus
2005-09-08 13:47 ` Ed Falis
2005-09-08 17:03 ` Pascal Obry
2005-09-08 16:45 ` Jeffrey Carter
2005-09-08 19:37 ` Simon Wright
2005-09-08 6:32 ` adaworks
2005-09-08 9:09 ` Jean-Pierre Rosen
2005-09-08 16:56 ` Jeffrey Carter
2005-09-09 14:04 ` Bob Spooner
2005-09-09 16:17 ` adaworks
2005-09-23 23:04 ` Randy Brukardt
2005-09-14 8:57 ` Ole-Hjalmar Kristensen
2005-09-23 23:09 ` Randy Brukardt
2005-09-24 10:49 ` Larry Kilgallen
2005-09-24 20:27 ` Lurker
2005-09-25 0:20 ` Robert A Duff
2005-09-25 17:05 ` adaworks
2005-09-01 11:42 ` Georg Bauhaus
2005-09-01 13:59 ` Dmitry A. Kazakov
2005-09-01 15:36 ` Georg Bauhaus
2005-09-01 18:34 ` Dmitry A. Kazakov
2005-09-02 10:43 ` Georg Bauhaus
2005-09-02 13:11 ` Dmitry A. Kazakov
2005-09-02 14:23 ` Georg Bauhaus
2005-09-02 19:48 ` Dmitry A. Kazakov
2005-09-02 17:21 ` Björn Persson
2005-09-01 16:04 ` Robert A Duff
2005-09-01 18:06 ` Dmitry A. Kazakov
2005-09-02 10:42 ` Georg Bauhaus
2005-09-02 13:20 ` Dmitry A. Kazakov
2005-09-02 14:14 ` Georg Bauhaus
2005-09-02 19:48 ` Dmitry A. Kazakov
2005-09-03 20:01 ` Georg Bauhaus
2005-09-04 10:13 ` Dmitry A. Kazakov
2005-09-05 13:22 ` Georg Bauhaus
2005-09-05 15:50 ` Dmitry A. Kazakov
2005-09-05 18:20 ` Georg Bauhaus
2005-09-05 18:31 ` Georg Bauhaus
2005-09-06 8:20 ` Dmitry A. Kazakov
2005-09-06 11:52 ` Georg Bauhaus
2005-09-06 13:46 ` Dmitry A. Kazakov
2005-09-06 15:51 ` Georg Bauhaus
2005-09-06 21:32 ` Robert A Duff
2005-09-07 9:08 ` Dmitry A. Kazakov
2005-09-07 18:20 ` Georg Bauhaus
2005-09-07 19:07 ` Georg Bauhaus
2005-09-07 21:23 ` Dmitry A. Kazakov
2005-09-08 10:27 ` Georg Bauhaus
2005-09-08 11:39 ` Georg Bauhaus
2005-09-08 13:44 ` Dmitry A. Kazakov
2005-09-08 18:18 ` Georg Bauhaus
2005-09-09 10:06 ` Dmitry A. Kazakov
2005-09-09 12:26 ` Georg Bauhaus
2005-09-09 12:29 ` Georg Bauhaus
2005-09-01 8:48 ` Jean-Pierre Rosen
2005-09-01 15:57 ` Robert A Duff
2005-09-01 21:42 ` Gene
2005-09-01 22:56 ` tmoran
2005-09-05 15:53 ` Gene
2005-09-05 17:47 ` jimmaureenrogers
2005-09-05 22:13 ` Robert A Duff
2005-09-06 8:24 ` Dmitry A. Kazakov
2005-09-05 19:22 ` Jeffrey R. Carter
2005-09-05 21:54 ` Robert A Duff
2005-09-05 22:50 ` Larry Kilgallen
2005-09-05 23:46 ` Robert A Duff
2005-09-12 3:59 ` Dave Thompson
2005-09-06 16:02 ` Jeffrey Carter
2005-09-06 21:00 ` Robert A Duff
2005-09-06 5:38 ` Pascal Obry
2005-09-05 21:48 ` Robert A Duff [this message]
2005-09-06 5:25 ` tmoran
2005-09-06 14:58 ` Robert A Duff
2005-09-06 9:26 ` Georg Bauhaus
2005-09-06 15:00 ` Robert A Duff
2005-09-07 11:02 ` Thierry Pirot
2005-09-07 20:09 ` Robert A Duff
2005-09-06 13:22 ` Bob Spooner
2005-09-06 15:30 ` Robert A Duff
2005-09-06 16:12 ` Jeffrey Carter
2005-09-06 21:21 ` Robert A Duff
2005-09-02 20:19 ` Jeffrey R. Carter
2005-09-03 12:51 ` Dr. Adrian Wrigley
2005-09-03 14:08 ` Jacob Sparre Andersen
2005-09-05 8:34 ` Jean-Pierre Rosen
2005-09-05 9:32 ` Arrays indexed by fixed point types (Was: Surprise in array concatenation) Jacob Sparre Andersen
2005-09-05 11:07 ` Jean-Pierre Rosen
2005-09-05 15:12 ` Dr. Adrian Wrigley
2005-09-05 12:14 ` Dmitry A. Kazakov
2005-09-05 13:07 ` Jacob Sparre Andersen
2005-09-05 15:10 ` Dmitry A. Kazakov
2005-09-05 11:29 ` Surprise in array concatenation Dr. Adrian Wrigley
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox