comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <bauhaus@futureapps.de>
Subject: Re: Surprise in array concatenation
Date: Mon, 05 Sep 2005 20:20:19 +0200
Date: 2005-09-05T20:19:33+02:00	[thread overview]
Message-ID: <431c8c35$0$2101$9b4e6d93@newsread2.arcor-online.net> (raw)
In-Reply-To: <79fcfodixv3k$.1m7d28joczncs$.dlg@40tude.net>

Dmitry A. Kazakov wrote:

>>Likewise, a computer might surprise us in suggesting that our
>>fine mathematically thought-out program doesn't quite behave exactly
>>as we thought, because of the naughty computer thingy and its
>>quirks.
> 
> 
> You are mixing inadequate and inconsistent models.

The world (our problem domain) *is* inconsistent,
otherwise, if it were consistent, how could we possibly
know what inconsistency is? We can agree on someting.
(As I said, HALT is the limit, I think we cannot even formally
decide, mathematically, whether consistency is consistent.)

A computer, being a real world item, has a good chance of
being whatever it is, there is no complete knowledge of a
computer's consistency. Mathematically consistent programs
can be helpful when the set of preferred consistency rules
is both specified and relates to the program.

>>We have
>> lo, hi: arrays -> I,
>> item: arrays x I -> values

> What about hi >= lo?

No problem, as hi, lo: arrays -> I are just functions.
(These are "minimal" assumptions, really.)

> What about handling Some_Array (Some_Array'First)
> failure?

Same as handling any indexing failure. But different from, and
possibly unrelated to, elaborating the range that is established by
a pair of index values.

> Note that it fails not because there is no A'First, but because
> the index is wrong? How so? It exists, but wrong!

A'First for an empty array isn't wrong at all, it is just a value
from the set of index values.
An array is associated with two particular values from the set
of index values. Then there is a function,
  item: arrays x I -> values,
defined for some (array, index) pairs, undefined for others.

> Then what would you do
> with modular and enumeration types?

Use subtypes. Computers are finite, so are types. So I say what
I want in Ada, another value to mark off the end. Not nice but
practical. (Real types exist inside computers, computed in finite
time. Mathematical types can exist as "infinite" type look-alikes
as in Haskell.)


>>>Better ADT is what Ada needs.
>>
>>Is Ada a Must for you?
> 
> 
> Sure. C++ shortens my life!

Then don't use C++. But there are practical alternatives to
C++ if you can give up some pieces of Ada.

> Like C++? (:-))

Like many.

> What I want is freedom.

Then choose not use empty arrays, or test for 'length = 0, or
build your own array abstraction, use use Ada.Containers.Vectors,
.... or do not use Ada.

> I don't want the compiler to decide for me whether
> there must be "off" values or not.

The compiler does not force you to use "off" index values,
it forces you to use Ada. When this limit is not o.K., ...


> The concept of array must be consistent
> with index types having no "off" values, like ring buffers.

I see that you like this view, and I see that many programmers and language
designers use indexing with off-bounds index values.

Some languages can do without index manipulation, and with empty sets.
Consider this SETL/2 example:

program automatic_indexes;

        Couples := { ["Frank", "Lisa"],
                     ["Joe", "Nancy"],
                     ["Jack", "John"],
                     ["Jack", "Lisa"] };

        selpuoC := {[x, y]: [y, x] in Couples};


        print("Just the Two of Us: ",
              {[x, y]: y = Couples(x) | #Couples{x} = 1 and #selpuoC{y} = 1});

        for person in { x: x in domain Couples | #Couples{x} = 1}
                   +  { y: y in range  Couples | #selpuoC{y} = 1}
        loop
                print(person, " says, 'One is enough for me!'");
        end loop;

end automatic_indexes;


 [Eiffel solution]

> This is incompatible with modular and enumeration types. It also has a
> distributed overhead. You either will have no by-copy types or will need to
> store NONE where one bit would otherwise be enough. Then making a hash
> function you'll need to explicitly test for NONE etc.

Are you sure you know these things about Eiffel, as opposed to something
that you think must must be the case with Eiffel?


> Sure. And in mathematics there is no problem to write:
> 
>    forall x in X

Like in many programming languages.

> I in A'First..A'Last that A'Range is 1) ordered, 2) has the lower and upper
> bounds, 3) these bounds belong to the array. These assumptions are not
> always required. Moreover, for some arrays they are wrong.

A range with A'Last > A'First is not wrong, I see that you don't
like it. It seems you want to restrict Ada by disallowing
programmers to freely use this widespread idiom for expressing
empty arrays, because it violates your preferences for some
consistency of ordered indexing, right?




  reply	other threads:[~2005-09-05 18:20 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 [this message]
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
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