comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: array from static predicate on enumerated type
Date: Fri, 12 Mar 2021 22:55:51 -0600	[thread overview]
Message-ID: <s2hgko$6u5$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: 6ca041f3-2669-4497-9548-2f17666702a6n@googlegroups.com

"Matt Borchers" writes:


>I do want a map or hash table, but in this case, I was hoping that Ada 
>would handle the mapping for me ...

Ada is not some sort of magic wand. What you want requires a complex data 
structure, and using an array (as defined in Ada) for it is not practical 
(mainly because of the slice operation of which I've complained previously).

>...such that I did not have to instantiate such a complexity for a simple 
>example.

Ada was designed to provide high-quality (that is, fast) code. If you want a 
language with a high degree of abstraction -- Ada isn't it. And in such a 
language, you wouldn't have arrays (in the Ada sense) at all - you would 
only have maps and sequences.

And if you think a single instance is "such complexity", I have no idea what 
you would want -- a map instance is simpler to write than an array type 
declaration (and *much* simpler under the covers). Do you also never use 
Unchecked_Deallocation?? It's harder to instantiate than an Ordered_Map.

>I was a bit surprised after discovering Static_Predicate that the Ada 
>language
>syntax was essentially useless in dealing with it in a consistent way.

I was in favor of set constraints rather than Static_Predicates, mainly 
because of the value problems Dmitry commented on. But even those would have 
been illegal in arrays -- an array makes a lousy way to describe a map.

Anyway, subtypes with Static Predicates work for case statements, 
memberships, an for loops; they're only disallowed for arrays. I don't think 
anyone should be writing an array in a modern language (outside of 
interfacing to something outside of that language) - it's a mixed up data 
structure that only makes sense because of historical reasons.

>I like the idea of creating non-contiguous enumerated sub-types.

Static predicates do that fine. Just don't use them with obsolete data 
structures. :-)

                          Randy.


  reply	other threads:[~2021-03-13  4:55 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 [this message]
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
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