From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on ip-172-31-91-241.ec2.internal X-Spam-Level: X-Spam-Status: No, score=0.0 required=3.0 tests=none autolearn=unavailable autolearn_force=no version=4.0.1 Path: nntp.eternal-september.org!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: In precision typing we trust Date: Fri, 29 Aug 2025 10:07:45 +0200 Organization: A noiseless patient Spider Message-ID: <108rn4h$1rkon$2@dont-email.me> References: <107uv9g$3019a$1@dont-email.me> <107v1ji$303of$1@dont-email.me> <336fbb5f-a279-ea8e-67fd-f62bb00d6a89@irrt.De> <107vfb9$34cpj$1@dont-email.me> <10855lq$gj8l$1@dont-email.me> <1088h1a$19635$1@dont-email.me> <1089p1i$1ig1d$1@dont-email.me> <108aq2p$1qo9o$1@dont-email.me> <108b1r3$1sj3c$1@dont-email.me> <108dh4t$2f5h3$2@dont-email.me> <108dkik$2g20p$1@dont-email.me> <108g1cg$32gqg$2@dont-email.me> <108h6b0$3a75k$2@dont-email.me> <108iiq5$3lihe$3@dont-email.me> <108mhhk$j2jt$1@dont-email.me> <108mis1$j4cj$1@dont-email.me> <108o33p$vok4$5@dont-email.me> <108o6rp$10njb$1@dont-email.me> <108o7cm$10qct$1@dont-email.me> <108o845$10pj9$3@dont-email.me> <108oann$115to$1@dont-email.me> <108occm$11h9j$2@dont-email.me> <108p3om$16qn1$3@dont-email.me> <108r884$1osg9$3@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 29 Aug 2025 08:07:45 +0000 (UTC) Injection-Info: dont-email.me; posting-host="2875a737d4341ace9c98c50ea5ed6746"; logging-data="1954583"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+VRBRycwgHL2KMdel3ULFKFbMt1xKlX1U=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:MEF1V3anBfhpDNDKo0Kp66wyByM= Content-Language: en-US In-Reply-To: <108r884$1osg9$3@dont-email.me> Xref: feeder.eternal-september.org comp.lang.ada:66987 List-Id: On 2025-08-29 05:53, Lawrence D’Oliveiro wrote: > But they are still of that same “Abstract_Packet'Class”, which is the base > class. Yes, because it was designed so. This is what being typed is. > You cannot specify “Foo_Packet'Class” as the return type on one > call, “Bar_Packet'Class” on another call, etc. Why should I? The return type is equivalent (not is!) to Foo_Packet in one call and Bar_Packet in another. A value of Abstract_Packet'Class can be viewed as a value of Foo_Packet, if the type tag specifies Foo_Packet as the specific type. You can check the tag dynamically or use it indirectly in dispatching calls = calls to methods (in Ada terminology "primitive operations"). The caller expects a value of a class member = a value of a descendant of Abstract_Packet. This paradigm in literature is called "generic programming" when a program is written in terms of a class (class Abstract_Packet) = a set of types derived from Abstract_Packet = {Foo_Packet, Bar_Packet, ...}. The program does not know the specific type and need not to know. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de