comp.lang.ada
 help / color / mirror / Atom feed
* Best use cases for OOP
@ 2025-08-28 14:40 Kevin Chadwick
  2025-08-28 14:45 ` Best use cases for OOP (resent quoted sorry) Kevin Chadwick
  0 siblings, 1 reply; 8+ messages in thread
From: Kevin Chadwick @ 2025-08-28 14:40 UTC (permalink / raw)


On 28/08/2025 10:02, Dmitry A. Kazakov wrote:

On 2025-08-28 10:50, Kevin Chadwick wrote:

I can explain how it works. When a DLL is loaded its library level

gets elaborated. So if you have:

package P is

   type T is tagged ...

end P;

in the main program or DLL and

with P;

package Q is

   type S is new T with ...

   function F return T'Class;

end Q;

in the DLL being loaded, then in the process of elaboration S will be

created which in particular means extending of the dispatching table.

You can return a class-wide object from there and dispatch on the

newly created type's operation.

Clear?

Interesting, better than the shape examples but I guess you have to get

that in the first instance.

Dynamic polymorphism is an extremely powerful mechanism, but it kind of

bends out of traditional typing.

It is like the relativity theory. Everything is relative, position,

velocity, but up to the point. Acceleration is not anymore. Same is with

typing: value->type, so far so good, but one more step up:

value->type->class and something happens. Primitive operations become

reachable even if you do not see them, you cannot hide them. Multiple

inheritance, OK, but what about conflicts, is it additive or idempotent?

Multiple dispatch is a total dark hole.


I have struggled to find compelling reasons to use tagged types considering
they affect the size of records and potentially elaboration issues that
cannot exist without tagged types.

I know some use tagged types just for dot notation but that doesn't really
move the needle in my mind. I would certainly appreciate it if people could
share their favourite use cases for tagged types though. Things that are
perhaps a pain without them or were with Ada 83.

-- 
Regards, Kc

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2025-08-29 10:37 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-28 14:40 Best use cases for OOP Kevin Chadwick
2025-08-28 14:45 ` Best use cases for OOP (resent quoted sorry) Kevin Chadwick
2025-08-28 15:12   ` Dmitry A. Kazakov
2025-08-28 18:28   ` Niklas Holsti
2025-08-28 20:23   ` Alex // nytpu
2025-08-29  8:28     ` Dmitry A. Kazakov
2025-08-29  9:14       ` Kevin Chadwick
2025-08-29 10:37         ` Dmitry A. Kazakov

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