comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Array Help?
Date: Thu, 8 Mar 2012 20:02:27 -0600
Date: 2012-03-08T20:02:27-06:00	[thread overview]
Message-ID: <jjbobn$frv$1@munin.nbi.dk> (raw)
In-Reply-To: Pine.LNX.4.64.1203081150460.6571@medsec1.medien.uni-weimar.de

<stefan-lucks@see-the.signature> wrote in message 
news:Pine.LNX.4.64.1203081150460.6571@medsec1.medien.uni-weimar.de...
> On Wed, 7 Mar 2012, Randy Brukardt wrote:
>
>> "Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message
>> news:wccy5rls0hl.fsf@shell01.TheWorld.com...
>> > stefan-lucks@see-the.signature writes:
>> >>   procedure Sort(Items: in out array(generic Positive range <>) of T) 
>> >> is
>> >
>> > Interesting idea.
>>
>> Can't you do this with a type conversion to an appropriate constrained 
>> array
>> subtype? (Such conversions slide.) I suppose it could be a pain to 
>> declare
>> such a subtype in front of every call, but it is a trick I've used a some
>> cases (usually in wrappers) to force sliding on arguments.
>
> Can you explain a bit more?

Bob and I both gave examples of it in other messages.

>> I suppose a more convinient way to force that would be helpful.
>
> Beyond the inconvenience, there are two further issues:
>
> 1. Testing
>
> When you declare
>
>  procedure Sort(Items: in out array(Positive range <>) of T)

Let's hope you never do that, because anonymous types are the bane of Ada. 
And you surely can't do it today!

> in a package specification, and you try to write a proper black-box test,
> you need *more* test cases then when you do the same with another popular
> language.

Right. Bob's suggestion for some semi-constrained array subtype would fix 
that. But note that it was killed in Ada 95 in part because the 
implementation needed was essentially a record type with some sort of magic 
indexing. Which was a mess.

Not sure if those issues can really go away, and I doubt there is much 
interest in new first-class kinds of constraints.

...
> 2. Generality
>
> Given the (Ada 2020?) specification
>
>  procedure Sort(Items: in out array(generic Positive range <>) of T);

Again, anonymous types are a disaster in Ada, and there is no way that we 
should have more of them. I would strongly hope that this never appears even 
in Ada 2525. ;-)

> Sort(X) should be callable if the index type of X is any discrete type,
> except when the index type is too large (i.e., X has more than
> Positive'Last elements).

If you want that, you need to declare that. Positive is a numeric type, and 
thus has "+" and "-" available; it is never going to be allowed to match 
"any discrete type" which includes enumeration types.

It's plenty easy to write a generic like this (see the predefined ones for 
examples), so I fail to see what possible need you are addressing here.

                                    Randy.





  reply	other threads:[~2012-03-09  2:02 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 [this message]
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