comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Half Constrained Array Types and Slices
Date: 10 Mar 2006 12:38:58 -0500
Date: 2006-03-10T12:38:58-05:00	[thread overview]
Message-ID: <wccmzfyurm5.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: fg7Qf.2239$x94.1238@newsread1.news.pas.earthlink.net

"Jeffrey R. Carter" <spam.not.jrcarter@acm.not.spam.org> writes:

> I think the index type should be discrete. But surely it doesn't need to
> be an integer:
> 
> with Ada.Text_IO;
> procedure Null_Range is
>     type A is (B, C);
> 
>     type D is array (A range <>) of Integer;
> 
>     E : D (C .. B);
> begin -- Null_Range
>     Ada.Text_IO.Put_Line (Item => A'Image (E'Last) );
> end Null_Range;
> 
> This is valid Ada.

Indeed it is.  I don't think it's very useful, however.
My claim is that if you want empty arrays, you almost
certainly want to index them by (non-modular) integers.
Which is why I'm happy with the restriction in the Containers
library that Vector indices must be signed integers.

>... With GNAT, it outputs B. However, if D were a string
> type, "" would not be valid for it.
> 
> > The idea that 'Range is equivalent to 'First..'Last seems reasonable to
> > me...
> 
> I'm not saying it's a good idea. I'm just wondering what the
> consequences of it are.

I suppose the consequence is bugs -- rare cases where 'First and/or
'Last surprisingly raise Constraint_Error.

- Bob



  parent reply	other threads:[~2006-03-10 17:38 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-02  5:00 Half Constrained Array Types and Slices Jeffrey R. Carter
2006-03-02  8:34 ` Dmitry A. Kazakov
2006-03-02 15:34   ` Georg Bauhaus
2006-03-02 19:37     ` Dmitry A. Kazakov
2006-03-02 20:06   ` Jeffrey R. Carter
2006-03-02 20:37     ` Dmitry A. Kazakov
2006-03-02 21:01     ` Robert A Duff
2006-03-02 20:40   ` Robert A Duff
2006-03-02 14:32 ` Larry Kilgallen
2006-03-02 20:08   ` Jeffrey R. Carter
2006-03-02 20:48   ` Robert A Duff
2006-03-06  2:16     ` Larry Kilgallen
2006-03-06 18:50       ` Martin Krischik
2006-03-02 20:38 ` Robert A Duff
2006-03-03  5:15   ` Jeffrey R. Carter
2006-03-03  8:57     ` Dmitry A. Kazakov
2006-03-03 23:41     ` Robert A Duff
2006-03-06 17:50       ` Jeff Carter
2006-03-06 18:31         ` Dmitry A. Kazakov
2006-03-07 19:02           ` Jeff Carter
2006-03-08 14:29             ` Dmitry A. Kazakov
2006-03-09 22:44               ` Robert A Duff
2006-03-10  8:46                 ` Dmitry A. Kazakov
2006-03-06 19:49         ` Stefan Lucks
2006-03-08 17:36         ` brian.b.mcguinness
2006-03-08 17:56           ` Jeff Carter
2006-03-09 22:36         ` Robert A Duff
2006-03-10  4:28           ` Jeffrey R. Carter
2006-03-10  8:46             ` Dmitry A. Kazakov
2006-03-10 17:33               ` Robert A Duff
2006-03-10 21:24                 ` Dmitry A. Kazakov
2006-03-10 17:38             ` Robert A Duff [this message]
2006-03-11  0:19               ` Randy Brukardt
2006-03-11  1:43                 ` Jeffrey R. Carter
2006-03-11  8:38                   ` Niklas Holsti
replies disabled

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