comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Surprise in array concatenation
Date: Wed, 7 Sep 2005 11:08:47 +0200
Date: 2005-09-07T11:08:47+02:00	[thread overview]
Message-ID: <1b8825x3b8wn3.24qm946raz3d$.dlg@40tude.net> (raw)
In-Reply-To: 431dbabc$0$24153$9b4e6d93@newsread4.arcor-online.net

On Tue, 06 Sep 2005 17:51:11 +0200, Georg Bauhaus wrote:

> Dmitry A. Kazakov wrote:
>> On Tue, 06 Sep 2005 13:52:53 +0200, Georg Bauhaus wrote:
>> 
>> The violation is in inability to construct empty arrays and ranges for some
>> types.
> 
> Many kinds of structured data cannot be constructed
> from Ada's types because of Ada's rules. How does this violate Ada's
> contracts?

If those aren't abstract types, it does.

> A contract is not necessarily simple, nor without deliberately
> chosen limitations.

Arbitrary limitations you mean. If an unbounded array type is not allowed
to have empty instances, then I expect to see that explicitly specified in
the contract. Soon Ada will have never-null access types. It also could
have never-empty arrays, but only this way.

>> That becomes funny. What is a "finite" value? Is 1/3 finite? What about
>> 0.1? (:-))
> 
> Earlier I said, forget about real numbers (from mathematics) in real
> computers. 1/3 is indeed an example in binary computers: An interval
> representing two real numbers close to 1/3 is not 1/3, and you cannot
> hope to be computing using real numbers using the facilities of a
> real computing machine. That is because almost all reals cannot be
> represented in a finite computer.

Nope. You confuse sets and elements. Any infinite subset of R (and R
itself) cannot be represented by *specifying its members*, because they
aren't countable. But any real and any finite real subset can. Further any
set can be represented by other means.

The domain set of a type need not to be countable. Neither you need to
count all values of a type in a given program. Did you ever use all
possible values of Integer? Nevertheless, you can do all sorts of quite
useful things without that. Now imagine that there are more integers than
that. Would it change anything for you? Not in a well designed program!

Note an important point of Ada design, as opposed to may other languages.
In Ada you specify what kind of values you are going to use. You say:

My_Integer is range 0..100;
   -- I don't care about other integers
My_Float is digits 8 range 0.0..100.0;
   -- I don't care about reals outside and in between

This is the right way to handle uncountable things without inventing any
new "computer" mathematics, where an element is not element and greater is
less.

>> LOL! Any program represents anything symbolically.
> 
> No, an executing program has an interpretation.
> This makes "representing" have a meaning.

And meaning is represented by what? (:-))

>> Do you really believe
>> that 1 is *the* 1? Did you see a label "made in Heaven" on it? (:-))
> 
> Type Positive starts at 1 and ends with Positive'Last.

... and it does this not symbolically, but physically by attaching a tiny
rubber thread to the Platonic number 1. Right? (:-))

> The fact that A'First doesn't always refer
> to an element is not different from the fact that A'Length / 2
> doesn't always refer to an element, even when the array isn't empty.
> Of what use is the test A'Length = 0 in this case?

A'Length and A'First have different types. Ada is a typed language!

You are trying to formulate some generic algorithm which does not work for
all index types. This is why it is so important to have a consistent model
of indexing and arrays. For an unordered [index] type X it is wrong to
assume that:

1. If L in X and U in X then there is always M in X between L and U
2. That M can be computed as (L+U)/2

Examples: hash map, variable length string map etc.

The contracts like 1&2 have be stated, not implied ones, if the application
have to rely on them.

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



  parent reply	other threads:[~2005-09-07  9:08 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-01  3:16 Surprise in array concatenation Gene
2005-09-01  7:55 ` Dmitry A. Kazakov
2005-09-01  8:02   ` Florian Weimer
2005-09-01 11:48     ` Georg Bauhaus
2005-09-01 12:02       ` Lutz Donnerhacke
2005-09-01 13:01         ` Georg Bauhaus
2005-09-01 15:54       ` Florian Weimer
2005-09-01 16:09     ` Robert A Duff
2005-09-05  8:38       ` Jean-Pierre Rosen
2005-09-05 23:52         ` Robert A Duff
2005-09-06  9:03           ` Jean-Pierre Rosen
2005-09-07 17:57         ` adaworks
2005-09-07 20:01           ` Robert A Duff
2005-09-08  8:08             ` Jacob Sparre Andersen
2005-09-07 22:46           ` Jeffrey Carter
2005-09-08  4:43             ` Simon Wright
2005-09-08 10:36               ` Georg Bauhaus
2005-09-08 13:47                 ` Ed Falis
2005-09-08 17:03                   ` Pascal Obry
2005-09-08 16:45               ` Jeffrey Carter
2005-09-08 19:37                 ` Simon Wright
2005-09-08  6:32             ` adaworks
2005-09-08  9:09               ` Jean-Pierre Rosen
2005-09-08 16:56               ` Jeffrey Carter
2005-09-09 14:04                 ` Bob Spooner
2005-09-09 16:17                 ` adaworks
2005-09-23 23:04               ` Randy Brukardt
2005-09-14  8:57           ` Ole-Hjalmar Kristensen
2005-09-23 23:09           ` Randy Brukardt
2005-09-24 10:49             ` Larry Kilgallen
2005-09-24 20:27             ` Lurker
2005-09-25  0:20             ` Robert A Duff
2005-09-25 17:05             ` adaworks
2005-09-01 11:42   ` Georg Bauhaus
2005-09-01 13:59     ` Dmitry A. Kazakov
2005-09-01 15:36       ` Georg Bauhaus
2005-09-01 18:34         ` Dmitry A. Kazakov
2005-09-02 10:43           ` Georg Bauhaus
2005-09-02 13:11             ` Dmitry A. Kazakov
2005-09-02 14:23               ` Georg Bauhaus
2005-09-02 19:48                 ` Dmitry A. Kazakov
2005-09-02 17:21           ` Björn Persson
2005-09-01 16:04   ` Robert A Duff
2005-09-01 18:06     ` Dmitry A. Kazakov
2005-09-02 10:42       ` Georg Bauhaus
2005-09-02 13:20         ` Dmitry A. Kazakov
2005-09-02 14:14           ` Georg Bauhaus
2005-09-02 19:48             ` Dmitry A. Kazakov
2005-09-03 20:01               ` Georg Bauhaus
2005-09-04 10:13                 ` Dmitry A. Kazakov
2005-09-05 13:22                   ` Georg Bauhaus
2005-09-05 15:50                     ` Dmitry A. Kazakov
2005-09-05 18:20                       ` Georg Bauhaus
2005-09-05 18:31                         ` Georg Bauhaus
2005-09-06  8:20                         ` Dmitry A. Kazakov
2005-09-06 11:52                           ` Georg Bauhaus
2005-09-06 13:46                             ` Dmitry A. Kazakov
2005-09-06 15:51                               ` Georg Bauhaus
2005-09-06 21:32                                 ` Robert A Duff
2005-09-07  9:08                                 ` Dmitry A. Kazakov [this message]
2005-09-07 18:20                                   ` Georg Bauhaus
2005-09-07 19:07                                     ` Georg Bauhaus
2005-09-07 21:23                                     ` Dmitry A. Kazakov
2005-09-08 10:27                                       ` Georg Bauhaus
2005-09-08 11:39                                         ` Georg Bauhaus
2005-09-08 13:44                                         ` Dmitry A. Kazakov
2005-09-08 18:18                                           ` Georg Bauhaus
2005-09-09 10:06                                             ` Dmitry A. Kazakov
2005-09-09 12:26                                               ` Georg Bauhaus
2005-09-09 12:29                                               ` Georg Bauhaus
2005-09-01  8:48 ` Jean-Pierre Rosen
2005-09-01 15:57 ` Robert A Duff
2005-09-01 21:42   ` Gene
2005-09-01 22:56     ` tmoran
2005-09-05 15:53       ` Gene
2005-09-05 17:47         ` jimmaureenrogers
2005-09-05 22:13           ` Robert A Duff
2005-09-06  8:24             ` Dmitry A. Kazakov
2005-09-05 19:22         ` Jeffrey R. Carter
2005-09-05 21:54           ` Robert A Duff
2005-09-05 22:50             ` Larry Kilgallen
2005-09-05 23:46               ` Robert A Duff
2005-09-12  3:59                 ` Dave Thompson
2005-09-06 16:02             ` Jeffrey Carter
2005-09-06 21:00               ` Robert A Duff
2005-09-06  5:38         ` Pascal Obry
2005-09-05 21:48       ` Robert A Duff
2005-09-06  5:25         ` tmoran
2005-09-06 14:58           ` Robert A Duff
2005-09-06  9:26         ` Georg Bauhaus
2005-09-06 15:00           ` Robert A Duff
2005-09-07 11:02             ` Thierry Pirot
2005-09-07 20:09               ` Robert A Duff
2005-09-06 13:22         ` Bob Spooner
2005-09-06 15:30           ` Robert A Duff
2005-09-06 16:12             ` Jeffrey Carter
2005-09-06 21:21               ` Robert A Duff
2005-09-02 20:19     ` Jeffrey R. Carter
2005-09-03 12:51     ` Dr. Adrian Wrigley
2005-09-03 14:08       ` Jacob Sparre Andersen
2005-09-05  8:34         ` Jean-Pierre Rosen
2005-09-05  9:32           ` Arrays indexed by fixed point types (Was: Surprise in array concatenation) Jacob Sparre Andersen
2005-09-05 11:07             ` Jean-Pierre Rosen
2005-09-05 15:12               ` Dr. Adrian Wrigley
2005-09-05 12:14             ` Dmitry A. Kazakov
2005-09-05 13:07               ` Jacob Sparre Andersen
2005-09-05 15:10                 ` Dmitry A. Kazakov
2005-09-05 11:29           ` Surprise in array concatenation Dr. Adrian Wrigley
replies disabled

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