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-Thread: 103376,2a3157e5254b8223 X-Google-Attributes: gid103376,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news1.google.com!postnews.google.com!i20g2000prf.googlegroups.com!not-for-mail From: Adam Beneschan Newsgroups: comp.lang.ada Subject: Re: Array slices and types Date: Thu, 21 Aug 2008 07:44:29 -0700 (PDT) Organization: http://groups.google.com Message-ID: References: <5886ab95-8744-4b72-b911-e4cb8889c7e7@d1g2000hsg.googlegroups.com> <1k5uib98w8fgw.bno6vggps1p3.dlg@40tude.net> <48ac6750$0$23587$4f793bc4@news.tdc.fi> <48acfbe8$0$23588$4f793bc4@news.tdc.fi> NNTP-Posting-Host: 66.126.103.122 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: posting.google.com 1219329870 16352 127.0.0.1 (21 Aug 2008 14:44:30 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 21 Aug 2008 14:44:30 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: i20g2000prf.googlegroups.com; posting-host=66.126.103.122; posting-account=duW0ogkAAABjRdnxgLGXDfna0Gc6XqmQ User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20050922 Fedora/1.7.12-1.3.1,gzip(gfe),gzip(gfe) Xref: g2news1.google.com comp.lang.ada:1730 Date: 2008-08-21T07:44:29-07:00 List-Id: On Aug 21, 1:53 am, "Dmitry A. Kazakov" wrote: > On Thu, 21 Aug 2008 08:26:26 +0300, Niklas Holsti wrote: > > But doesn't this example show that it would be useful to have 'Base > > also for array types? > > For any type, actually. > > Consider this language design fault: > > procedure Initialize (X : in out S) is > begin > Initialize (T (X)); > ... -- My stuff > end Initialize; > > A call to Initialize should be done automatically, but it is not. So the > parent of S must be explicitly specified and known to all descendant. This > is a really *bad* thing: > > package Foo is > type S is new T with private; > private > type S is new Private_Decendant_Of_T with ...; > end Foo; > > What would happen if Private_Decendant_Of_T overrode Initialize of T? The > result would be an inability to publicly derive from S any new types if > Initialize should be extended! > > S'Base could mend it: > > procedure Initialize (X : in out S) is > begin > (S"Base (X)).Initialize; -- Call to parent whatever it be > ... -- My stuff > end Initialize; Sorry, Dmitry, but if you'll pardon the expression, you're a little off-base here. S'Base and S are subtypes of the same *type*. They may be different subtypes (have different constraints), but they're the same type. You're asking for an attribute that would give you a different type. There may be merit in having such an attribute (I haven't looked into it closely), but calling it 'Base would be a bad idea. S'Parent might be better. Niklas is asking for S'Base to be the unconstrained array subtype of the (possibly constrained) array subtype S. It would still fit into the definition of 'Base (3.5(15)). I'm not sure why this wasn't defined for array subtypes, or for any other type that could have discriminants; offhand I don't see how this would cause any problems. -- Adam