From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Path: eternal-september.org!reader02.eternal-september.org!aioe.org!5WHqCw2XxjHb2npjM9GYbw.user.gioia.aioe.org.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: array from static predicate on enumerated type Date: Tue, 16 Mar 2021 15:25:00 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <89128f73-fcc5-4e57-8067-d09877ba0211n@googlegroups.com> <6ca041f3-2669-4497-9548-2f17666702a6n@googlegroups.com> <26c44e00-a899-455a-a929-1e23c7935fe3n@googlegroups.com> <9abb081d-a323-466d-9ae8-a2fc8fa24725n@googlegroups.com> NNTP-Posting-Host: 5WHqCw2XxjHb2npjM9GYbw.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 X-Notice: Filtered by postfilter v. 0.9.2 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:61564 List-Id: 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