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: "unconstrained subtype in component declaration" vs "discriminant in constraint must appear alone" Date: Mon, 22 Feb 2021 11:57:43 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <4086f350-c56b-4eec-91d3-ef685230b011n@googlegroups.com> <67ea71d9-489a-4802-9cf0-d955f6ecce62n@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.7.1 X-Notice: Filtered by postfilter v. 0.9.2 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:61410 List-Id: On 2021-02-22 11:14, AdaMagica wrote: > J-P. Rosen schrieb am Montag, 22. Februar 2021 um 07:32:27 UTC+1: >> 3) Sets_of_Card (0..nb-1) >> Yes, you cannot make computations >> in a discriminant constraint. Although this may seem sometimes >> frustrating to the user, it was required for implementation reasons. > > Remeber, a discriminant is a record component like the others, so it covers some bits. > If it were allowed to be used in expressions, either each result would need a storage place of its own or a reevaluation at every use of the object. Yes, though if the implementation would dope all indefinite representations, not just arrays, then keeping some more things in the dope or evaluating them would not be a big issue. The ultimate goal is, of course, removing the dope if static. Be it array bounds, discriminants or type tag. P.S. Composition of a dope from the dopes of the components is basically the same problem as full multiple inheritance. If the language had one it could have both. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de