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!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Niklas Holsti Newsgroups: comp.lang.ada Subject: Re: Ada Successor Language Date: Mon, 25 Jun 2018 22:16:33 +0300 Organization: Tidorum Ltd Message-ID: References: <5e86db65-84b9-4b5b-9aea-427a658b5ae7@googlegroups.com> <878t7u1cfm.fsf@nightsong.com> <776f3645-ed0c-4118-9b4d-21660e3bba4b@googlegroups.com> <87602fbu2g.fsf@nightsong.com> <87po0mziqt.fsf@nightsong.com> <87fu1izfgs.fsf@nightsong.com> <878t75nwad.fsf@adaheads.home> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: individual.net hVe2MifL2stTpxIjVQSWOgsI66ro5c7FN7IkUsGsmnTE8pdk3H Cancel-Lock: sha1:L6WnXPU0WLbeAwMG+HuFZwDDCtY= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 In-Reply-To: Xref: reader02.eternal-september.org comp.lang.ada:53310 Date: 2018-06-25T22:16:33+03:00 List-Id: On 18-06-25 17:21 , Dmitry A. Kazakov wrote: > On 2018-06-25 16:03, Niklas Holsti wrote: > >> (In fact, it seems to me that Ada could allow untagged record >> extensions as well; the effect would be the same as for tagged ones, >> but no 'Class would be formed, and no class-wide programming or >> dynamic dispatch could be used, so all such types would be static. > > Ada could allow T'Class for untagged T. T'Class would be an indefinite > type with values consisting of the actual type's tag and its value. When > T is by-value type, you pass T'Class to a subprogram as tag + value. > When T is by-reference type, you pass tag + reference. Yes, that could be another point in the division of the "OO programming concept" into smaller, more "primitive" features -- building blocks -- which could be combined in various ways. Your suggestion would allow class-wide programming without storing tags _in_ objects. > Upon dispatch, you strip the tag from the value or reference before > passing value/reference down. > P.S. No re-dispatch is possible in this model, sorry. Indeed. However, while I insist on re-dispatch in some cases, I don't insist on re-dispatch in all cases :-) The possible need for re-dispatch would then be one of the reasons for choosing the untagged approach (your suggestion) or the tagged approach (present Ada). -- Niklas Holsti Tidorum Ltd niklas holsti tidorum fi . @ .