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=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: a07f3367d7,cced0e2ac94722f3 X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII-7-bit Received: by 10.205.139.10 with SMTP id iu10mr532458bkc.4.1325928158566; Sat, 07 Jan 2012 01:22:38 -0800 (PST) Path: cj8ni66516bkb.0!nntp.google.com!news1.google.com!goblin1!goblin2!goblin.stu.neva.ru!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Ada2012 : Expression functions and extended return statements Date: Sat, 7 Jan 2012 10:21:05 +0100 Organization: cbb software GmbH Message-ID: <1r85q2y2w0wg9$.1wnaqxpos4it9$.dlg@40tude.net> References: <94808f24-938b-476e-8912-f98b52982d53@j10g2000vbe.googlegroups.com> <1650969959347553100.869853martin-re.mo.ve.thedowies.com@news.btinternet.com> <1292hrynqxgnm$.12shf160d3gpi.dlg@40tude.net> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: PPt+vSuBRqtkVsMLa1J3Dg.user.speranza.aioe.org Mime-Version: 1.0 X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Date: 2012-01-07T10:21:05+01:00 List-Id: On Fri, 6 Jan 2012 19:47:21 -0600, Randy Brukardt wrote: > "Dmitry A. Kazakov" wrote in message > news:1292hrynqxgnm$.12shf160d3gpi.dlg@40tude.net... >> On Fri, 06 Jan 2012 08:45:22 -0600, Martin Dowie wrote: >> >>> "Dmitry A. Kazakov" wrote: >> >>>> This is not a declaration, because the result is not an object. >>> >>> 2012 RM 3.1 6/3 says it is a declaration (but I should have written >>> 'Result' not 'Return'). >> >> Surely it says so, but it is not a declaration of the result object. > > Yes it is, because the result object (and, as you point out, there can be > more than one) is formally a separate object from whatever the result is > assigned into. (This becomes obvious when the result is renamed or directly > indexed, because in those cases there is no assigned object, but there still > has to be a result object). This is true even for limited types; in that > case, the result object "morphs" into the assigned object, but still they > formally are separate objects. For other objects, the compiler can also use > build-in-place and avoid materializing the result object, but in all cases > it exists formally. > > And the result object has to be an object, because it doesn't make sense to > assign into parts of something that isn't an object. > > I think your model of what is an object is different than Ada's (which dates > back to the original Ada 80). I never care much about exact definitions given in RM in discussions about Ada as *a* language. They can illustrate the point, but can never serve as an argument, because to be able to discuss a language or any system you have to leave it first. If somebody claimed that "jump" would be better than "goto," then answering that RM 5.8(2) specifies it as "goto" would be just silly. > Which is fine, but you confuse the issue when > your terminology deviates from the accepted Ada meaning. But it does its job perfectly well. I mean the job of describing what is going on, and, note, without resorting to "morphing objects" and other phantasms. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de