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.3 required=5.0 tests=BAYES_00,INVALID_MSGID, MSGID_RANDY autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,88e7ef9008757431 X-Google-Attributes: gid103376,public From: Robert Dewar Subject: Re: Function Calls by Address Date: 1999/09/06 Message-ID: <7r1cro$9pf$1@nnrp1.deja.com>#1/1 X-Deja-AN: 521821311 References: <37CADE68.6AF06F5D@escmail.orl.lmco.com> <37CEEFFA.7D73F78D@magic.fr> <7qooh7$hbh$1@nnrp1.deja.com> <37CFFEA6.921CBE59@magic.fr> <7qp5oo$2un@hobbes.crc.com> <7qptoa$cul$1@nnrp1.deja.com> <37D2E1A7.CAC3F923@magic.fr> <7qvasf$sno$1@nnrp1.deja.com> <37D41767.CEB186F4@magic.fr> X-Http-Proxy: 1.0 x42.deja.com:80 (Squid/1.1.22) for client 166.72.71.164 Organization: Deja.com - Share what you know. Learn what you don't. X-Article-Creation-Date: Mon Sep 06 21:48:43 1999 GMT X-MyDeja-Info: XMYDJUIDrobert_dewar Newsgroups: comp.lang.ada X-Http-User-Agent: Mozilla/4.04 [en] (OS/2; I) Date: 1999-09-06T00:00:00+00:00 List-Id: In article <37D41767.CEB186F4@magic.fr>, Francois Godme wrote: > Is it wrong to think that Machine_State_Operations gathered methods that > apply on a Machine_State, as its own name may imply? Is it wrong to > think that an abstract tagged type could fill the same purpose, if it > was allowed in this context? To make my previous reply a little clearer. The issue here is one of modular structure, I do not see what tagged types have to do with it. So let me address the two issues separately: 1. Tagged types, why on earth would you use such a heavy approach here. There is only one instance of machine operations for a given port of GNAT, so using dispatching to get to these routines is entirely gratuitous, as is type extension. There is no point in using tagged types and polymorphism when a perfectly straightforward abstract data type will do just as well. For some reason, this simply fact seems to get forgotten these days. 2. The discussion here is about modular structure. We have two choices, either of which could be used with or without tagged types. We can either use a subunit, or a private child package. I see the subunit as far neater, because it encapsulates the functionality just to the package body, whereas the child is a child of the spec. The child is thus at the same level as the spec, and this seems to be a violation of abstraction, not to mention that it results in the gratuitous addition of an extra separately compiled unit (the useless package spec). SO, once again, I think that ??emstop is a very nice example of how subunits can be used in a neat way, with minimal syntactic overhead, to achieve exactly what is wanted. Note that this is a case where the argument is based on encapsulation alone. That was deliberate. You can of course make far more convincing examples where the inheritance of the surrouding environment is critical (ah, but then I forgot you don't like nested environments :-) Indeed subunits and nested procedures are quite related from a structural point of view, in both cases, one of the powerful features is the implicit inheritance of the surrounding environment. Robert Dewar Sent via Deja.com http://www.deja.com/ Share what you know. Learn what you don't.