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:06:46 -0500
Date: 2012-02-29T18:06:46-05:00	[thread overview]
Message-ID: <wccy5rls0hl.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: Pine.LNX.4.64.1202292025510.3727@medsec1.medien.uni-weimar.de

stefan-lucks@see-the.signature writes:

> On Wed, 29 Feb 2012, Robert A Duff wrote:
>
>> Anyway, slices aren't really all that useful -- for many array types,
>> you don't need them at all.  And slices as l-values, as in your
>> example, are quite rare, because you really want to be able to
>> change the length of the slice, if you want to change it at all.
>
> Not quite. I quite frequently use something like
>
>   X := X(X'Last) & (X'First .. X'Last-1) 
>
> and 
>
>   First := X'First; 
>   while First < X'Last and then X(First) = ' ' loop 
>     First := First + 1;
>   end loop; 
>   return X(First .. X'Last);
>
> and similar constructs, where array slicing is a highly useful language 
> feature. 

Mildly useful, I'd say.  If you didn't have slices, you'd have to
write a few lines of code instead of the above -- an extra loop.
That's a purely local change.  No big deal.

Contrast that with features like packages, private types, user-defined
integer types, etc, the lack of which would damage the entire structure
of your program.

Sure, slices are useful, and I use them.  But I wouldn't mind too
much if they didn't exist.  It's trivial to write a Slice function
that does what "A(F..L)" does.

You didn't address my point about l-values.  None of your slices
above are l-values.  L-value slices cause a lot of implementation
trouble, and are nearly useless -- the language would be better
off without them.

> On the other hand, I agree that the fact that array slices carry their 
> original indices with them is a misfeature of Ada. 
>
> I would appreciate way to convert ingoing parameters into some standard 
> indexing. For example (inventing a new syntax variant on the fly):
>
>   procedure Sort(Items: in out array(generic Positive range <>) of T) is

Interesting idea.

- Bob



  parent reply	other threads:[~2012-02-29 23:06 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 [this message]
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
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