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.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,90108ed846e3f1bf X-Google-Attributes: gid103376,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news1.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!tiscali!newsfeed1.ip.tiscali.net!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!newsfeed.arcor.de!newsspool4.arcor-online.net!news.arcor.de.POSTED!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: Why constructing functions is a mess [was Language lawyer question: task activation Newsgroups: comp.lang.ada User-Agent: 40tude_Dialog/2.0.15.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <24bdd0df-9554-49de-9c5e-99572c9cdf34@g38g2000yqd.googlegroups.com> <1v0f2pkso7p50.vein84avao5t.dlg@40tude.net> <499ede41$0$32665$9b4e6d93@newsspool2.arcor-online.net> <1lhxmo6l2ypux.bei2ffp1m3e$.dlg@40tude.net> <499f2c59$0$31868$9b4e6d93@newsspool3.arcor-online.net> <1vcaimc8kjj30$.kf3rsd670ebp$.dlg@40tude.net> <1gxn72yzshp07$.6ytqydmmz37u.dlg@40tude.net> <49a92c29$0$32670$9b4e6d93@newsspool2.arcor-online.net> <1wzjy9pzbft1m.1lut7nszfkzmp$.dlg@40tude.net> <49a95a12$0$31347$9b4e6d93@newsspool4.arcor-online.net> <49a97231$0$30236$9b4e6d93@newsspool1.arcor-online.net> <1mjbcbequf1wz.1o3nwuz7oqteo.dlg@40tude.net> <49a984f6$0$30226$9b4e6d93@newsspool1.arcor-online.net> <49ac0595$0$31344$9b4e6d93@newsspool4.arcor-online.net> Date: Mon, 2 Mar 2009 18:46:43 +0100 Message-ID: <1p6sf3ykej2ls.10jmdonrmif5h.dlg@40tude.net> NNTP-Posting-Date: 02 Mar 2009 18:46:47 CET NNTP-Posting-Host: afe6fe1f.newsspool3.arcor-online.net X-Trace: DXC=N On Mon, 02 Mar 2009 17:13:09 +0100, Georg Bauhaus wrote: > Dmitry A. Kazakov schrieb: > >> A derived type works fine: >> >> type My_Plant is new Power_Plant with null record; >> function Create return My_Plant is >> begin >> return (Power_Plant'(Create ("my plant")) with null record); >> end Create; > >> Now, the point is that this model of construction does not work with >> abstract types because of fundamental reasons. It is not (<>) which is >> broken, but the construction model. > > OK, got your point, sorry for being so dense. No, you still have not. The problem is that the idea of constructing functions replacing constructors is broken. The example I presented is just one consequence of this flaw. > Should the following work for unconstrained abstract Power_Plant? > (some day, e.g. > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34507 ) It is not a compiler bug. It is a language bug. Besides, I have GNAT Pro. > Would you consider dropping a note on AI05-067 to the ARG list? Thank you for illustrating my point. This AI perfectly illustrates were assumptions like 2+2=5 lead: COMING SOON: !! Mutating objects and Spider-Man !! -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de