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=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,43aafc250d42730f X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-02-07 08:28:52 PST Path: supernews.google.com!sn-xit-02!sn-xit-01!supernews.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.cwix.com!sjc-peer.news.verio.net!news.verio.net!sjc-read.news.verio.net.POSTED!not-for-mail Newsgroups: comp.lang.ada From: Brian Rogoff Subject: Re: controlled type in generic package? In-Reply-To: <95rpj5$gq7$1@nnrp1.deja.com> Message-ID: References: <3A7FDA9A.C667090F@stn-atlas.de> <95p2ab$463$1@nnrp1.deja.com> <95q1fa$9e$1@usenet.rational.com> <95rpj5$gq7$1@nnrp1.deja.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Date: Wed, 07 Feb 2001 16:29:17 GMT NNTP-Posting-Host: 206.184.139.136 X-Complaints-To: abuse@verio.net X-Trace: sjc-read.news.verio.net 981563357 206.184.139.136 (Wed, 07 Feb 2001 16:29:17 GMT) NNTP-Posting-Date: Wed, 07 Feb 2001 16:29:17 GMT Organization: Verio Xref: supernews.google.com comp.lang.ada:4933 Date: 2001-02-07T16:29:17+00:00 List-Id: On Wed, 7 Feb 2001, Ted Dennison wrote: > In article <95q1fa$9e$1@usenet.rational.com>, > "Mark Lundquist" wrote: > > > > Ted Dennison wrote in message > > > Also, any instantiations of this generic will have to be done at the > > > library level, since Limited_Controlled is declared at the library > > > level, and types can't be declared at a lower level of scope than > > > their parent types. > ... > > > (As a user, I hate that rule.) > > > > Do you hate it as much as what might happen if it weren't for the > > rule? :-) > > I have to admit I'm a little unclear as to what nasty things could > happen to me if I were allowed to declare a derived tagged type at a > lower scope level than their parent type. The worst I can see that some > objects that are pointed to in a classwide aggregated data structure > might go invalid if I have things badly programmed. Since none of the > Ada compilers I use have garbage collection (and I can't use controlled > types as a general solution), I have to worry about deallocation issues > anyway, so its not like this is really saving me from anything. > > On the other hand, I loose the ability to make use of the safer > controlled types in all but the most restrictive of circumstances. This > is not a theoretical issue; Its prevented me from using controlled types > in quite a few situations. In a very real sense, the baby got thrown out > with the bathwater. So perhaps this is just my ignorance speaking, but > yes, I do hate it more. > > Of course there's nothing saying that there couldn't have been a > solution that keept the rule, but allowed non-library-level controlled > types. This whole situation is just an unfortunate side-effect of the > implementation method chosen for controlled types, and has nothing to do > with controlled types themselves. As such, I think its clear its a *bug* > in the Ada spec, which hopefully will be fixed in the next serious > revision. Making Ada.Controlled a generic would seem an obvious solution > (if a bit of a hack), but I'll leave the actual fix up to those who are > good at that sort of thing. I think that there is definitely a "usability" issue about Ada concerning nesting. In the AI on limited access types Bob Duff discussed allowing nested derivations as a substitute for funargs, just empowering the standard object as function trick. Tying Controlled to derivation has definitely been a pain for me as a user too. I imagine it's less of a pain to C and C++ programmers who use Ada, since if you're used to "flat" languages you can program in "flat" Ada and you're mostly OK. It's a bit of a bummer when writing collection libaries since if you make your collections controlled you pass on those restrictions. I bet people who really get used to (a lexically scoped (not Emacs)) Lisp or a modern functional language find this more irritating, because some natural programming styles in those languages make use of nesting that Ada doesn't have, just like people who get used to overloading in Ada really miss it in ML. -- Brian