comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Normalizing array indices
Date: Sat, 29 Oct 2011 15:41:02 -0500
Date: 2011-10-29T15:41:02-05:00	[thread overview]
Message-ID: <j8hod2$qas$1@munin.nbi.dk> (raw)
In-Reply-To: j8hnkv$30l$1@tornado.tornevall.net

"Jeffrey Carter" <spam.jrcarter.not@spam.not.acm.org> wrote in message 
news:j8hnkv$30l$1@tornado.tornevall.net...
> On 10/29/2011 12:29 AM, Pascal Obry wrote:
>>
>> generic
>>    type Element_Type is private;
>>    type Sort_Array_Type is array (Positive range<>) of Element_Type;
>>    with function "<" (Left, Right: Element_Type) return Boolean is<>;
>> procedure Sort(A: in out Sort_Array_Type)
>
> The problem is the use of Positive for the generic formal array index. One 
> thinks of numbers as being infinite, so failing to think about the effect 
> of adding 1 to an index is natural.
>
> Why should a general-purpose sort procedure restrict the client to arrays 
> indexed by Positive?

Of course, there is little reason to create a general purpose sort of your 
own, given that the Standard already contains two (and there is a third one 
added in Ada 2012). You pretty much have to have some special purpose to 
justify the work. The ones in the Standard have the following 
specifications:

generic
   type Index_Type is (<>);
   type Element_Type is private;
   type Array_Type is array (Index_Type range <>) of Element_Type;
   with function "<" (Left, Right : Element_Type)
      return Boolean is <>;
procedure Ada.Containers.Generic_Array_Sort (Container : in out Array_Type);
pragma Pure(Ada.Containers.Generic_Array_Sort);

and

generic
   type Index_Type is (<>);
   with function Before (Left, Right : Index_Type) return Boolean;
   with procedure Swap (Left, Right : Index_Type);
procedure Ada.Containers.Generic_Sort
      (First, Last : Index_Type'Base);
pragma Pure(Ada.Containers.Generic_Sort);

(There is also a constrained version that's similar to the first.)

The last version allows sorting anything ordered (it does not have to be an 
array).

There are also sorting routines for the vector and list containers.

                           Randy.







  parent reply	other threads:[~2011-10-29 20:42 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-28 18:58 Normalizing array indices Stefan.Lucks
2011-10-28 20:36 ` Adam Beneschan
2011-11-01 20:18   ` Stefan.Lucks
2011-10-28 21:13 ` Randy Brukardt
2011-10-29  7:29   ` Pascal Obry
2011-10-29 19:18     ` Jeffrey Carter
2011-10-29 19:58       ` tmoran
2011-10-29 21:15         ` Simon Wright
2011-10-29 20:41       ` Randy Brukardt [this message]
2011-11-01 20:49         ` stefan-lucks
2011-11-01 20:44     ` stefan-lucks
2011-11-01 20:43   ` stefan-lucks
2011-11-02 12:16     ` Robert A Duff
2011-10-29  9:05 ` Simon Wright
2011-10-29  9:23   ` Dmitry A. Kazakov
2011-11-01 20:55   ` stefan-lucks
2011-11-02 12:14   ` Robert A Duff
replies disabled

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