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=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,dbcfe2b0a74da57e X-Google-Attributes: gid103376,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!postnews.google.com!g4g2000hsf.googlegroups.com!not-for-mail From: Maciej Sobczak Newsgroups: comp.lang.ada Subject: Re: Inherited Methods and such Date: Wed, 26 Sep 2007 14:50:08 -0700 Organization: http://groups.google.com Message-ID: <1190843408.713838.128690@g4g2000hsf.googlegroups.com> References: <1190239986.762473.204290@k79g2000hse.googlegroups.com> <1rw45b3rmvmcr$.1df4wst5oknbl$.dlg@40tude.net> <1190296353.624737.150940@y42g2000hsy.googlegroups.com> <11m13st1f92kf$.m8s6y8mc8ebk.dlg@40tude.net> <1190321119.206313.65290@57g2000hsv.googlegroups.com> <1190408526.100291.265040@50g2000hsm.googlegroups.com> <9ukf2wtqjs0q$.iuijmal4x56b$.dlg@40tude.net> <1190497995.498679.119190@19g2000hsx.googlegroups.com> <1mw3qju08q8uj.sgzht7ld9ydc$.dlg@40tude.net> <1190579805.451187.71140@d55g2000hsg.googlegroups.com> <1i8ksr774bjbj.vpmnx3c0i9qz.dlg@40tude.net> <1190646125.024072.310020@19g2000hsx.googlegroups.com> <1r9s9v6pcjifl.vp4ktk0unpd1.dlg@40tude.net> <1190753631.240548.101820@19g2000hsx.googlegroups.com> NNTP-Posting-Host: 85.3.107.199 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" X-Trace: posting.google.com 1190843408 13644 127.0.0.1 (26 Sep 2007 21:50:08 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Wed, 26 Sep 2007 21:50:08 +0000 (UTC) In-Reply-To: User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6,gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: g4g2000hsf.googlegroups.com; posting-host=85.3.107.199; posting-account=ps2QrAMAAAA6_jCuRt2JEIpn5Otqf_w0 Xref: g2news2.google.com comp.lang.ada:2150 Date: 2007-09-26T14:50:08-07:00 List-Id: On 26 Wrz, 14:26, Robert A Duff wrote: > > Let's also not forget that Initialize is useless as a constructor (and > > thus incomparable to C++) anyway due to the lack of parameters. But so- > > called "constructor functions" will not solve this problem. > > I've lost track of this discussion (sorry -- it's gotten rather > philosophical at times!). Yes, but I don't feel guilty. ;-) > Could you please explain exactly what this > constructor problem is? The constructor, as known from many other languages, can have parameters that can possibly influence its work. Ada does not provide anything built-in for this. > And why "constructor functions" do not solve > it? Constructor functions in Ada are functions that return new objects (most useful for limited types since Ada 2005) can have parameters, but they still don't acknowledge the "progressive" nature of the whole process. This means that no matter whether we use Initialize or constructor functions, the final type of the object is established at the very beginning and is kept during the whole construction process. If this process involves some activities on various levels of the type inheritance chain, the ugly effects like the one from my example can result, because primitive operations can be called bypassing the intended order of component construction. > Are there other languages (c++, perhaps?) that have a complete solution > to this problem? My claim in this lengthy and philosophical discussion is that C++ provides a complete solution which can be shortly described like this: the final type is not established from the very beginning, but is progressively moving along the inheritance chain as the subsequent constructors of base types complete their work. Thank's to this, primitive operations never dispatch further than what can be statically reasoned about. Implementation-wise, this can be done with "just" changing the tag of the object as each base constructor completes. -- Maciej Sobczak http://www.msobczak.com/