comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Studying and Maintaining GNAT, Is There Any Interest in a New Group?
Date: Tue, 28 Aug 2018 09:26:43 +0200
Date: 2018-08-28T09:26:43+02:00	[thread overview]
Message-ID: <pm2tfi$1sv1$1@gioia.aioe.org> (raw)
In-Reply-To: pm1qcm$3bt$1@franka.jacob-sparre.dk

On 2018-08-27 23:27, Randy Brukardt wrote:
> "Lucretia" <laguest9000@googlemail.com> wrote in message
> news:1ceec6d8-c5c4-49b1-9808-a3580bba3f8e@googlegroups.com...
> ...
>> I never said anything about not learning from DIANA, I said don't
>> implement it. Reason is simple, it was designed using Ada83, we have
>> OO now and OO fits a compiler perfectly and would be a hell of a lot
>> nicer than a bunch of variant records/enums.
> 
> Fitting OO into a compiler design could very easily turn into a nightmare of
> required overriding routines, making it very painful to add new kinds of
> nodes.

Which is not even possible with variant records. Enumeration types are 
not extensible and have no classes anyway to allow building a 
*comparable* case. E.g.

    type Choice is (A, B);
    type Var (Mode : Choice) is record
       case Mode is
          when A => ...
          when B => ...
       end case;
    end record;

1. How do you extend Choice:

    type Choice_Ext is new Choice with (C, D, E); -- This not Ada

2. How do you declare Var to accept any descendant of Choice as a 
discriminant?

    type Var (Mode : Choice'Class) is record -- This not Ada

3. How do you extend the variant record Var contains?

    type Var_Plus (Mode : Choice_Ext) is new Var with ? -- This not Ada

Since nothing of that kind is possible, what you propose is monolithic 
design AKA "god-class", when the variant record must know *in advance* 
all future "extensions", which are extensions no more. You will need to 
change the declarations of Choice and Var each time and then revisit all 
client code they appear.

And if the above were possible, how would it be different from 
inheritance as we know it?

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2018-08-28  7:26 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-25 12:27 Studying and Maintaining GNAT, Is There Any Interest in a New Group? patrick
2018-08-25 13:56 ` Dan'l Miller
2018-08-25 16:00   ` patrick
2018-08-25 16:16 ` Luke A. Guest
2018-08-25 17:42   ` patrick
2018-08-25 19:25     ` Simon Wright
2018-08-25 20:24       ` patrick
2018-08-25 21:48         ` Luke A. Guest
2018-08-25 21:53           ` patrick
2018-08-25 22:05             ` Luke A. Guest
2018-08-26 19:54           ` Dan'l Miller
2018-08-26 20:14             ` Dan'l Miller
2018-08-26 22:52             ` Lucretia
2018-08-27  2:38               ` Dan'l Miller
2018-08-27 14:46                 ` Lucretia
2018-08-27 15:42                   ` Dan'l Miller
2018-08-27 21:27               ` Randy Brukardt
2018-08-28  7:26                 ` Dmitry A. Kazakov [this message]
2018-08-29  0:16                   ` Randy Brukardt
2018-08-29  8:20                     ` Dmitry A. Kazakov
2018-08-29 21:43                       ` Randy Brukardt
2018-08-30  7:55                         ` Dmitry A. Kazakov
2018-08-30 23:25                           ` Randy Brukardt
2018-08-31  8:48                             ` Dmitry A. Kazakov
2018-08-31 22:42                               ` Randy Brukardt
2018-09-02  8:02                                 ` Dmitry A. Kazakov
2018-09-04 22:18                                   ` Randy Brukardt
2018-08-29  3:02                 ` Paul Rubin
2018-08-29  6:18                   ` Luke A. Guest
2018-08-29 19:00                     ` Paul Rubin
2018-08-30  5:54                       ` Luke A. Guest
2018-08-30  6:29                         ` Paul Rubin
2018-08-27 21:18             ` Randy Brukardt
2018-08-27  9:37           ` Simon Wright
2018-08-27 16:54             ` Bill Findlay
2018-08-27 17:42               ` Shark8
2018-08-31 21:23                 ` Robert A Duff
2018-08-31 22:51                   ` Randy Brukardt
2018-09-01 19:42                     ` Robert A Duff
2018-09-02  8:04                       ` Dmitry A. Kazakov
2018-09-02 10:11                     ` AdaMagica
2018-09-02 12:10                       ` Jeffrey R. Carter
2018-09-02 14:30                         ` AdaMagica
2018-09-04 22:05                           ` Randy Brukardt
2018-09-01  7:41               ` Simon Wright
2018-09-01 17:27                 ` Bill Findlay
2018-08-27 17:35         ` Shark8
2018-08-25 21:17       ` Luke A. Guest
2018-08-25 23:16       ` Paul Rubin
2018-08-26  8:03         ` Rene
2018-08-26 10:09         ` Simon Wright
2018-08-25 16:43 ` Jeffrey R. Carter
2018-08-25 17:38   ` patrick
2018-08-25 17:39     ` Luke A. Guest
2018-08-25 17:45       ` patrick
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox