comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Ada design bug or GNAT bug?
Date: Tue, 23 Jun 2015 19:15:28 +0200
Date: 2015-06-23T19:15:28+02:00	[thread overview]
Message-ID: <1x5zmf4ahhn24.1c5jwrp8hu2nb.dlg@40tude.net> (raw)
In-Reply-To: 667dce55-6a08-430b-bbe2-367e26a41e4e@googlegroups.com

On Tue, 23 Jun 2015 09:57:43 -0700 (PDT), Vincent wrote:

> Le mardi 23 juin 2015 16:38:43 UTC+2, Dmitry A. Kazakov a écrit :
>  > > For the OOP concept is based on an interface that is the same and
>>> instances that are different realizations of the same concept.
>> 
>> This is an inconsistent concept if taken literally. OOP never talk about
>> types being same. It does about same *behavior*. This is miles over miles
>> different. T and T'Class behave as if they were same in some contexts, but
>> they are not same from any point of view. Remember that class is a set of
>> types. A set is never equal to its instances. T'Class is a closure of
>> class. Closure of a set is not equal to an element of the set.
> 
> A would rather call a set of types a category [of types], like Integers or
> dicrete types.

Integers is a class of types, so discrete types are.

> A class type is an accessor to a category consisting of a given type and
> all types derived from it.

That is a parent type, which is just a type as any other.

The set of types bound by some relation (e.g. inheritance) is a class. The
class type as T'Class, is a type corresponding to the closure of the set
using the relation.

>>> One may think that the distinction between class type and tagged type is
>>> subtle, but the implications of it are huge : without class object one
>>> needs as replacement access to a class wide type.
>> 
>> Why?
> 
> Because one need a concrete object!

tagged object is a concrete object.

> With generics you can have a formal
> type because it will be instantiated during the early phase of
> compilation, but with OOP the code is generated before one knows the type
> of the object that will be called at runtime.

Ada supports shared generic bodies. For them code is generated before
instantiation.

> Strictly speaking this is not possible.

I don't know what you mean. The difference between static and dynamic
polymorphism is not when and how the code is being generated.

> The only possible solution is to use a unique object as an
> accessor for all possible objects.

A solution for what? Why there should be common ancestor of a polymorphic
class (set of types). There could be type systems when two types are mutual
ancestors and descendants of each other. The inheritance graph is not
necessarily a tree.

> The simplest way was to use an access
> to a class wide type.

Access type is not an ancestor of target types. In a better Ada it could be
descendant or a subtype, but not in present Ada.

> But Ada 83 limited the use of access types to pool specific types...

Ada 83 didn't mentioned pools.

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

  reply	other threads:[~2015-06-23 17:15 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-20 18:55 Ada design bug or GNAT bug? Dmitry A. Kazakov
2015-06-21  2:42 ` Randy Brukardt
2015-06-21  6:47   ` Dmitry A. Kazakov
2015-06-22 17:39     ` Randy Brukardt
2015-06-22 18:16       ` Dmitry A. Kazakov
2015-06-23 11:00         ` G.B.
2015-06-23 14:27           ` Dmitry A. Kazakov
2015-06-23 11:45         ` G.B.
2015-06-23 14:30           ` Dmitry A. Kazakov
2015-07-02 22:22         ` Randy Brukardt
2015-07-03  8:02           ` Dmitry A. Kazakov
2015-07-03 17:33             ` Randy Brukardt
2015-07-03 21:34               ` Dmitry A. Kazakov
2015-07-04  3:11                 ` Randy Brukardt
2015-07-04 12:14                   ` Dmitry A. Kazakov
2015-07-05  0:53                     ` Randy Brukardt
2015-06-22 18:27       ` Shark8
2015-06-23 11:51         ` vincent.diemunsch
2015-06-23 19:55           ` Shark8
2015-06-23 13:06         ` vincent.diemunsch
2015-06-23 14:30           ` David Botton
2015-06-23 15:57             ` Niklas Holsti
2015-06-23 16:01               ` G.B.
2015-06-23 18:05               ` David Botton
2015-06-23 19:38               ` David Botton
2015-06-23 14:38           ` Dmitry A. Kazakov
2015-06-23 16:57             ` Vincent
2015-06-23 17:15               ` Dmitry A. Kazakov [this message]
2015-06-23 19:14                 ` vincent.diemunsch
2015-06-23 19:33                   ` Dmitry A. Kazakov
2015-06-23 17:42           ` Jeffrey R. Carter
2015-07-02 22:06           ` Randy Brukardt
2015-07-04  1:52             ` Shark8
2015-07-04  3:24               ` Randy Brukardt
2015-07-04 11:02                 ` Build-in-place semantics? (Was: Ada design bug or GNAT bug?) Jacob Sparre Andersen
2015-07-04 12:15                   ` Dmitry A. Kazakov
2015-07-05  0:45                     ` Randy Brukardt
2015-07-05  7:10                       ` Dmitry A. Kazakov
2015-07-05  0:40                   ` Randy Brukardt
2015-07-04 14:05                 ` Ada design bug or GNAT bug? Bob Duff
2015-07-04  7:46               ` Simon Wright
2015-07-04 12:00                 ` Björn Lundin
2015-07-05  0:48                   ` Randy Brukardt
2015-07-06 12:37             ` Vincent
2015-07-06 20:05               ` Randy Brukardt
2015-07-07  8:06               ` 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