comp.lang.ada
 help / color / mirror / Atom feed
From: "Alejandro R. Mosteo" <alejandro@mosteo.com>
Subject: Re: 'Class'Class'Class'Class ad libitum
Date: Tue, 13 Sep 2016 18:10:12 +0200
Date: 2016-09-13T18:10:12+02:00	[thread overview]
Message-ID: <nr98d1$bem$1@dont-email.me> (raw)
In-Reply-To: <nr8rv6$15n3$1@gioia.aioe.org>

On 13/09/16 14:37, Dmitry A. Kazakov wrote:
> On 13/09/2016 12:43, Alejandro R. Mosteo wrote:
>> I get why this is legal:
>>
>>    type X is tagged null record;
>>
>>    subtype Y is X'Class;
>>
>>    subtype Z is X'Class'Class'Class'Class;
>>
>> But can you think of any legitimate reason to use it besides obfuscation?
>
> Only the latter is wrong. X'Class'Class cannot be same as X'Class.
>
> X is a set of values with operations on X
>
> X'Class is a set of values of X and values of all types derived from X
>
> X'Class'Class should be a set of values of X'Class and values of all
> types derived from X'Class. We cannot derive from X'Class in Ada, so
> class of X'Class holds only X'Class. But that does not make them same.
> Like X is not same as X'Class even if there is no descendants of X.
> Class-wide operations of X would be primitive operations of X'Class'Class.

I see that from a strict theoretic POV. However, that's not the 
interpretation that current Ada grammar does, right?

Actually I arrived at this because I am somewhat wary of the fact that 
using a subtype like Y in my example hides the fact to the reader that 
the type is class-wide and hence dispatching by default. Furthermore, 
you can legally write

procedure Blah (This : Other_Package.Y); -- or
procedure Blah (This : Other_Package.Y'Class);

and AFAIK that's totally equivalent but the former is less informative 
(and alas, shorter to write). First time I wrote the later I expected to 
get an error or warning of the short "subtype is already class-wide".

Álex.


  reply	other threads:[~2016-09-13 16:10 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-13 10:43 'Class'Class'Class'Class ad libitum Alejandro R. Mosteo
2016-09-13 11:29 ` J-P. Rosen
2016-09-13 16:10   ` Alejandro R. Mosteo
2016-09-13 18:53   ` Robert A Duff
2016-09-13 12:37 ` Dmitry A. Kazakov
2016-09-13 16:10   ` Alejandro R. Mosteo [this message]
2016-09-13 16:34     ` Dmitry A. Kazakov
2016-09-13 16:54       ` Alejandro R. Mosteo
2016-09-13 18:41         ` Dmitry A. Kazakov
replies disabled

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