From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on ip-172-31-65-14.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!aioe.org!siG8trSPtxwtkBCOZpBn8A.user.46.165.242.91.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: New aggregates with Ada 2022. Date: Wed, 22 Jun 2022 10:26:34 +0200 Organization: Aioe.org NNTP Server Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: gioia.aioe.org; logging-data="51183"; posting-host="siG8trSPtxwtkBCOZpBn8A.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.9.2 Xref: reader02.eternal-september.org comp.lang.ada:64012 List-Id: On 2022-06-22 01:39, Randy Brukardt wrote: > "Dmitry A. Kazakov" wrote in message > news:t8qrmo$p79$1@gioia.aioe.org... > ... >> 1. Built-in operations -> hiding: >> >> type T is private; >> function "+" (Left, Right : T) return T; -- Perfectly legal >> private >> type T is range 1..100; >> >> 2. Primitive operations -> overriding. > > BTW, these two are really the same thing. In the first example, the "+" is > overriding the predefined operation. Yes, they should be in a better world. A primitive operation is always reachable. The case above works differently from: type T is private; overriding function "+" (Left, Right : T) return T is abstract; But this is a deeper problem of having such operations primitive. > But note an important difference here from the aggregate case: in no case is > an operation available for the private type that is *not* available for the > full view. Since the syntax and semantics of container aggregates and array > aggregate are subtly different (they are as close as we could make them, but > that is not that close), there definitely are things that would be only > possible when written for the private view. That would be new for Ada. So > while a definition could be made, it would be confusing in some cases. And > this case isn't useful enough to make that effort. Much could be resolved by attributing proper types to all assumed or real intermediate steps: type T is private; function "+" (Left, Right : T) return T; private type T_Parent is range 1..100; type T is new T_Parent; -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de