From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Community Input for the Maintenance and Revision of the Ada Programming Language Date: Tue, 12 Sep 2017 12:22:09 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <915874b5-52c0-4aa8-9023-82fddedb816f@googlegroups.com> <67345f73-530c-400b-9eb4-63eeb440154c@googlegroups.com> <9a6338d9-83be-4e45-b8b7-edc56e33537f@googlegroups.com> NNTP-Posting-Host: vZYCW951TbFitc4GdEwQJg.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 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:48045 Date: 2017-09-12T12:22:09+02:00 List-Id: On 12/09/2017 11:21, Egil H H wrote: > On Tuesday, September 12, 2017 at 10:35:43 AM UTC+2, Dmitry A. Kazakov wrote: >> On 12/09/2017 09:42, Egil H H wrote: >>> On Tuesday, September 12, 2017 at 9:02:15 AM UTC+2, Tarjei Jensen wrote: >>>> It is different because you don't need to overload := to make it work. >>> >>> Substituting a discriminant with a record member does not magically change the behaviour of ":=" >> >> It does, because there are rules limiting assignment of discriminated >> records. > > Just as there would be rules limiting assignment of records with > members depending on other members, if we ever allowed that. Yes, but they would be different. A more close example would be: type Bounded_String (Bound : Natural := Max) is record Length : Natural := 0; Text : String (1..Bound); end record; To make things work, apart from having array interfaces, one must change the way user-defined assignment works, assuming there is one. It cannot be a single body like Adjust in Ada.Finalization. It must consist of two parts one to determine the discriminants of the left part and another to perform actual actions. The same applies to constructors. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de