From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: array from static predicate on enumerated type
Date: Wed, 17 Mar 2021 20:41:15 +0100 [thread overview]
Message-ID: <s2tm0n$1561$1@gioia.aioe.org> (raw)
In-Reply-To: ff7f8a0d-ff65-425a-8c01-6eb909d5cf60n@googlegroups.com
On 2021-03-17 19:44, Matt Borchers wrote:
> I understand what you are saying. But, we don't pass CURVED_LETTERS to Count, we pass a value of CURVED_LETTERS to Count.
You cannot pass that value. It is type violation as type operations and
the values set are different. [Predicate does not create a new type, it
only breaks the old one.] So the value must be converted to the expected
type (the conversion can be null) or else the operation must be
overridden or inherited with type conversion or else be class-wide and
then the value must be converted to a class-wide value.
> In my mind, the value should then assumed to be of the type as declared in the parameter to Count -- which is LETTERS in your example. Obviously any value of CURVED_LETTERS is actually a value of LETTERS. This is how Ada treats this case now.
Yes and it is no different to how Ada treats arrays of CURVED_LETTERS
right now.
> To your question, I would say that the compiler treat the argument for A : LETTERS as a member of LETTERS such that A'First = 0 and A'Last = 11 even if a value of CURVED_LETTERS was passed in (as it does now).
Then why you expect a different behavior from an array of CURVED_LETTERS?
> This discussion is helpful as I am now understanding that what I'm thinking is perhaps also equally inconsistent. My current thinking is that I preferred a value of a sub-type to continue to be comparable (with =) to a value of the parent type, but I also wanted it to behave like a full-fledged type when using its attributes.
You cannot have it both ways.
> Nevertheless, it still feels like an unfinished feature as it is now.
It is not unfinished. It is irreparably broken.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2021-03-17 19:41 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
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 [this message]
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