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!mx02.eternal-september.org!feeder.eternal-september.org!news.albasani.net!reality.xs3.de!news.jacob-sparre.dk!loke.jacob-sparre.dk!pnx.dk!.POSTED!not-for-mail From: "Randy Brukardt" Newsgroups: comp.lang.ada Subject: Re: Overriding puzzle Date: Wed, 30 Dec 2015 17:10:27 -0600 Organization: JSA Research & Innovation Message-ID: References: <5be84c5a-9614-4ee2-ae85-beb962171a05@googlegroups.com> <192c4493-9c53-4e23-b9bd-e4c543738dbc@googlegroups.com> <26e20ae9-ad86-4c88-9c67-f1a4a9b33f23@googlegroups.com> <677d0956-63d3-4de8-a6e5-b79c52a1dc12@googlegroups.com> NNTP-Posting-Host: rrsoftware.com X-Trace: loke.gir.dk 1451517028 24520 24.196.82.226 (30 Dec 2015 23:10:28 GMT) X-Complaints-To: news@jacob-sparre.dk NNTP-Posting-Date: Wed, 30 Dec 2015 23:10:28 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5931 X-RFC2646: Format=Flowed; Original X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 Xref: news.eternal-september.org comp.lang.ada:28943 Date: 2015-12-30T17:10:27-06:00 List-Id: wrote in message news:677d0956-63d3-4de8-a6e5-b79c52a1dc12@googlegroups.com... > On Wednesday, December 30, 2015 at 1:24:06 PM UTC-5, > gautier...@hotmail.com wrote: >> No, the "A'Class(o)" also makes the difference when type Custom >> is framed into a package: > ... > General note to self: tagged type operations that call other operations of > the type should always(?) convert the object to its 'class so as to cause > dispatching. Not doing so is probably a defect! Nooooo. Redispatching is best left for very limited circumstances. There's a reason that Ada makes you write it explicitly! The model of Ada is that within a routine (including inherited routines) the object acts as if it had the named type. This makes it much easier to reason about the routine, as the behavior of all of the routines called is known. When you redispatch, you no longer can reason in any useful way about the behavior of the call -- essentially you are depending on "magic" (and the competency of others) to get the right answer. In limited circumstances (like the OP), it works well, but for general programming, look out! Randy.