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!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Return by reference Date: Sun, 17 Dec 2017 15:57:02 +0100 Organization: Aioe.org NNTP Server Message-ID: References: NNTP-Posting-Host: sWq1fEaAu/L5fGxxOY76vQ.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; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.8.2 Xref: reader02.eternal-september.org comp.lang.ada:49500 Date: 2017-12-17T15:57:02+01:00 List-Id: On 2017-12-17 15:38, Jere wrote: > Implicit dereference has gone a long way in providing > a sort of return by reference capability in Ada. I don't think this is a right way anyway. A great number of application interested in in-place semantics would rather like to implement referential semantics of their own, possibly unrelated to any access type at all. Consider as example a DB interface: Table.Select (Column) := Value; There is simply to object to get access to. Using iterators and holders is one method, which is as you have noticed quite clunky, requires helper types obscuring everything, and still requiring access types. I would prefer language-assisted delegation to a getter/setter pair: function Getter (To : Container) return Element; procedure Setter (To : in out Container; Item : Element); -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de