comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: array from static predicate on enumerated type
Date: Tue, 16 Mar 2021 15:25:00 +0100	[thread overview]
Message-ID: <s2qf3q$1c7v$1@gioia.aioe.org> (raw)
In-Reply-To: fa67fb63-1c5e-43ca-b793-abd9ff02e5d9n@googlegroups.com

On 2021-03-16 14:27, Shark8 wrote:
> On Monday, March 15, 2021 at 2:25:11 PM UTC-6, Dmitry A. Kazakov wrote:
>> On 2021-03-15 18:48, Shark8 wrote:
>>
>>> So, in Ada, there's no good choice for how to actually DO an array with gaps in the index:
>> That applies to all containers. The problem is mapping the key to a
>> dense position when the key is not dense or might be unordered.
>>
>> There is no gaps in positions.
>>> But Array *isn't* a map, though often it is substituted as one.
>> Of course it is, per definition of mapping. f : key -> element.
> 
> I think you misunderstand, I said it has further constraints.
> That definition of map doesn't care how the order of 'key' is, Ada's array does.

No, that is apples and oranges. You compare unconstrained map with 
constrained array. The OP wanted to constrain LETTER to CURVED_LETTER 
with the corresponding effect on the container.

You cannot do that with either arrays or a predefined vector container. 
Ada does not have mechanism to do that on the level of a type.

You can do that on the level individual values. That is a dynamic 
constraint, e.g. checking the key or index before using it.

> That definition doesn't care if 'Key' is a discriminated-type, or constrained, or limited, Ada's array flat-out doesn't work without its 'key' (Index) being discrete, I don't know about limited as I haven't tried it.

Try this:

with Ada.Text_IO; use Ada.Text_IO;

procedure Test is
    type CURVED is ('B', 'C', 'D', 'G', 'J');
    A : array (CURVED) of Integer;
begin
    Put_Line (Integer'Image (A'Length));
end Test;

It will print:

  5

Again, the problem is not arrays. The problem is lack of 
substitutability of things built upon constrained keys of a map.

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

  reply	other threads:[~2021-03-16 14:25 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-12 20:49 array from static predicate on enumerated type Matt Borchers
2021-03-12 21:22 ` Egil H H
2021-03-12 22:16 ` Jeffrey R. Carter
2021-03-12 22:41 ` Dmitry A. Kazakov
2021-03-13  2:06   ` Matt Borchers
2021-03-13  4:55     ` Randy Brukardt
2021-03-15 14:16       ` Matt Borchers
2021-03-15 17:53         ` Shark8
2021-03-16  6:58         ` Randy Brukardt
2021-03-13  8:04     ` Dmitry A. Kazakov
2021-03-15 14:11       ` Matt Borchers
2021-03-15 17:48         ` Shark8
2021-03-15 20:25           ` Dmitry A. Kazakov
2021-03-16 13:27             ` Shark8
2021-03-16 14:25               ` Dmitry A. Kazakov [this message]
2021-03-17  4:05                 ` Matt Borchers
2021-03-17  7:08                   ` Dmitry A. Kazakov
2021-03-17 18:44                     ` Matt Borchers
2021-03-17 19:41                       ` Dmitry A. Kazakov
2021-03-18  1:30                         ` Matt Borchers
2021-03-18  8:20                           ` Dmitry A. Kazakov
2021-03-19  0:10                             ` Matt Borchers
2021-03-19  8:00                               ` Dmitry A. Kazakov
2021-03-18 10:15                           ` Niklas Holsti
2021-03-18 10:47                             ` AdaMagica
2021-03-18 11:26                               ` Dmitry A. Kazakov
2021-03-19  0:34                             ` Matt Borchers
2021-03-19  0:49                               ` Jeffrey R. Carter
2021-03-23  1:07                                 ` Matt Borchers
2021-03-23  3:43                                   ` Randy Brukardt
2021-03-22 19:09                               ` Niklas Holsti
2021-03-17 15:08                   ` Shark8
2021-03-17 19:08                     ` Matt Borchers
2021-03-17 20:41                       ` Shark8
2021-03-18  1:04                         ` Matt Borchers
2021-03-18 14:25                           ` Shark8
2021-03-18 23:36                             ` Matt Borchers
2022-03-16  0:38             ` Thomas
replies disabled

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