comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Ranges and (non)static constraints
Date: Fri, 17 Nov 2006 15:57:53 +0100
Date: 2006-11-17T15:57:53+01:00	[thread overview]
Message-ID: <160ziiyah2n7g.5k340gtji747.dlg@40tude.net> (raw)
In-Reply-To: tc3kje.tmr.ln@hunter.axlog.fr

On Fri, 17 Nov 2006 11:37:14 +0100, Jean-Pierre Rosen wrote:

> Dmitry A. Kazakov a �crit :
>> [;;;]
>> I almost agree with this. However, unfortunately Ada does not require
>> legality of
>> 
>>    type T range 1..N;
>> 
>> for any N, as it IMO should [*]. So the argument about portability becomes
>> a bit shaky. In fact it is only more portable than the second. However, the
>> second is definitely tasteless.
> This is legal for any N less than System.Max_Int (and illegal 
> otherwise). It is therefore portable on any machine which is capable of 
> supporting it - and illegal otherwise. If your machine cannot support 
> what you ask for, you'd better discover it at compile time! (I'm sure 
> you agree with this).

Actually it is not the machine which cannot, but the compiler. Why should I
care if an integer would fit a machine word?

>> Well, this is nice in theory, which I strongly support. But this theory
>> applies only to application software, where Absolute_Max_Expectable_Value
>> is determinable from the problem space.
>> 
>> When developing portable libraries, and Ada is one of the best choices
>> there, isn't it? Then the upper bound often becomes indeterminable. So
>> people are forced to use [new] Integer. ARM does this as well by defining
>> the type String based on Integer. Only in generics we have a choice to say:
>> 
>>    type T is range <>;
>> 
>> This shouldn't be so. It is IMO a language defect. 
>> 
> Actually, you have two (three) choices for libraries:
> 1) You want the maximum possible range. Declare a new type based on 
> System.Max_Int.
> 
> 2) You want a "reasonable" type, given the capabilities of the machine. 

3) I don't want to mention any constraint now, but delegate it to the user.
Generics is the only option for this now.

> Either derive from Integer, or use Integer directly (not a bad choice 
> for vector or matrix indices for example). That's what String did. But 
> in that case, there is no reason to put an additional range constraint. 
> What I was objecting to is putting a range on a derivation from Integer.

Yes, I definitely agree with this rule.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2006-11-17 14:57 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-16 11:02 Ranges and (non)static constraints Maciej Sobczak
2006-11-16 12:23 ` Martin Krischik
2006-11-16 13:23   ` Maciej Sobczak
2006-11-16 19:01     ` Jeffrey R. Carter
2006-11-18  0:02   ` Robert A Duff
2006-11-16 13:13 ` Dmitry A. Kazakov
2006-11-16 17:18   ` Jean-Pierre Rosen
2006-11-17  9:08     ` Dmitry A. Kazakov
2006-11-17 10:30       ` Stuart
2006-11-17 10:37       ` Jean-Pierre Rosen
2006-11-17 14:57         ` Dmitry A. Kazakov [this message]
2006-11-17 16:04           ` Jean-Pierre Rosen
2006-11-18  9:51             ` Dmitry A. Kazakov
2006-11-18 14:17             ` Stephen Leake
2006-11-17 20:05           ` Jeffrey R. Carter
2006-11-17 23:58             ` Robert A Duff
2006-11-18  9:47               ` Dmitry A. Kazakov
2006-11-19  2:27               ` Jeffrey R. Carter
2006-11-19 12:13                 ` Björn Persson
2006-11-19 22:51                 ` Robert A Duff
2006-11-20  3:51                   ` Jeffrey R. Carter
2006-11-21 21:02                     ` Robert A Duff
2006-11-20 17:35                   ` Adam Beneschan
2006-11-17 15:45         ` Maciej Sobczak
2006-11-17 16:45           ` Jean-Pierre Rosen
2006-11-17 10:39       ` AW: " Grein, Christoph (Fa. ESG)
2006-11-17 11:20         ` Dmitry A. Kazakov
2006-11-17 13:30           ` Stuart
2006-11-17 15:07             ` Dmitry A. Kazakov
2006-11-17 16:47               ` Jean-Pierre Rosen
2006-11-20 14:08               ` Stuart
2006-11-20 14:12                 ` Stuart
2006-11-20 15:48                   ` Dmitry A. Kazakov
2006-11-16 18:56   ` Jeffrey R. Carter
2006-11-16 20:00 ` 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