comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Discriminants of tagged types
Date: Wed, 27 Oct 2010 09:52:48 -0400
Date: 2010-10-27T09:52:48-04:00	[thread overview]
Message-ID: <wcczktzbv4f.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 1bytu43t5bi8y.1t3tebqbls31j.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:

> On Wed, 27 Oct 2010 05:34:26 -0700 (PDT), Ludovic Brenta wrote:
>
>> The tag has no default value and cannot have one, for that would
>> allow changing the type of an object at run time (through assignment
>> of an aggregate).
>
> No, it would not because you cannot assign a value of another type.

I think Ludovic means that the Tag could change.  That is, tags
are sort of like discriminants, so if Tags could have defaults,
then we can guess that they would inherit the strange rule "can change
if defaulted".  So this would work:

    A : T1;
    B : T'Class := A;
    C : T2;
    
    B := C; -- Raises an exception.

>> Therefore, *additional* discriminants cannot have default values either.
>
> I think there were concerns about implementation difficulties when the
> derived type adds new discriminants and/or defines some inherited ones.
>
> Anyway the limitation is indeed annoying.

Then you won't like my opinion, which is that this feature should
never have existed even for untagged types.  It's useful, but
it's just not worth the trouble, in terms of programmer confusion,
and implementation difficulty.  Also nonportability:

    type T(Length: Natural := 0) is
        record
            S: String(1..Length);
        end record;

This works on some implementations, and not others.

- Bob



  reply	other threads:[~2010-10-27 13:52 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-27 12:16 Discriminants of tagged types Maciej Sobczak
2010-10-27 12:34 ` Ludovic Brenta
2010-10-27 13:19   ` Dmitry A. Kazakov
2010-10-27 13:52     ` Robert A Duff [this message]
2010-10-27 14:12       ` Dmitry A. Kazakov
2010-10-27 13:44 ` Robert A Duff
2010-10-27 15:06   ` Adam Beneschan
2010-10-27 15:58     ` Yannick Duchêne (Hibou57)
2010-10-27 16:35       ` Vinzent Hoefler
2010-10-27 17:58       ` J-P. Rosen
2010-10-27 20:18         ` Yannick Duchêne (Hibou57)
2010-10-27 20:26       ` Adam Beneschan
2010-10-27 22:07         ` Yannick Duchêne (Hibou57)
2010-10-27 22:42           ` Adam Beneschan
2010-10-27 15:13   ` Maciej Sobczak
2010-10-27 16:02     ` Yannick Duchêne (Hibou57)
2010-10-27 21:13       ` Maciej Sobczak
2010-10-27 21:23         ` Ludovic Brenta
2010-10-28  8:38           ` Maciej Sobczak
2010-10-27 21:25         ` Vinzent Hoefler
2010-10-28  7:53         ` Dmitry A. Kazakov
2010-10-28  8:50           ` Maciej Sobczak
2010-10-28 10:28             ` Dmitry A. Kazakov
2010-10-28 17:48             ` Yannick Duchêne (Hibou57)
2010-10-29 18:59             ` Vinzent Hoefler
2010-10-30 21:05               ` Maciej Sobczak
2010-10-30 21:21                 ` Vinzent Hoefler
2010-10-30 22:01                   ` Yannick Duchêne (Hibou57)
2010-10-31 16:20                   ` Maciej Sobczak
2010-10-31 17:04                     ` Yannick Duchêne (Hibou57)
2010-10-31 18:36                     ` Shark8
2010-10-31 21:06                       ` Maciej Sobczak
2010-11-01  0:44                         ` Shark8
2010-11-01  9:41                           ` Maciej Sobczak
2010-10-27 16:06     ` Robert A Duff
2010-10-27 16:34       ` Yannick Duchêne (Hibou57)
2010-10-27 21:05       ` Maciej Sobczak
2010-10-28  0:35         ` Robert A Duff
2010-10-28  8:55           ` Maciej Sobczak
2010-10-27 21:28       ` Simon Wright
2010-10-27 13:54 ` J-P. Rosen
replies disabled

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