comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Ada Interfaces and the Liskov Substitution Principle
Date: Sun, 3 Jun 2007 09:09:12 +0200
Date: 2007-06-03T09:09:06+02:00	[thread overview]
Message-ID: <2vwm0plnu7gn.172jlansis6fm.dlg@40tude.net> (raw)
In-Reply-To: 1180802978.626766.128330@h2g2000hsg.googlegroups.com

On Sat, 02 Jun 2007 09:49:38 -0700, Maciej Sobczak wrote:

> On 2 Cze, 10:19, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> wrote:
> 
>>> The difference is that (in Ada terms) replacement
>>> allows you to change the tag. Assignment cannot do this.
>>
>> Neither can.
> 
> Yes, replacement can change the tag. It's the tag of referred object
> that can change. An access variable can point to Circle and then to
> Triangle.

No, this is illegal. At least in Ada,: access Circle and access Triangle
are different types. They cannot be assigned to each other.

> I can also replace a wheel in my car but it's not assignment of
> wheels.

If you want to bring the issue of identity (the wheel) then that's again
subject shifting.

>>>> Ah, wouldn't replacement double dispatching?
>>
>>> No, it wouldn't and that's the second difference. Replacement just
>>> gets rid of the current value before the new value is refered to,
>>> which means that from the dispatching point of view this operation is
>>> simply linear on right-hand-side - it's a pure single dispatch.
>>
>> No, this does not work. Apart from being semantically wrong in general
>> case, it is technically wrong.
> 
> Why is it semantically wrong?

Because variables of T'Class can be assigned with the values of T'Class if
T has assignment.

> Consider replacing wheels in your car.

You should have annotated that example with types, values and variables.
 
>> You have to dispatch to finalize LHS. You
>> have to dispatch to re-construct it from RHS.
> 
> It doesn't change anything in my reasoning. Two linear dispatches
> don't magically give you double dispatch!

Of course it does. A function of two arguments is still a function of two
arguments. Decomposability of the function into a product is irrelevant to
the issue. It dispatches in both arguments.

>>> Assignment has to be '2D' with both axes, or O(n2) in terms of
>>> implementation complexity. It has to be double-dispatching to make any
>>> sense and this is unrealistic implementation-wise.
>>
>> It is semantically this way. There is nothing to do about it, but to scrap
>> either assignment or class. (We are going in circles)
> 
> That's exactly what I'm talking about from the very beginning -
> T'Class should be limited.
> Is it only my impression that we actually agree? :-)

Not at all. The point is:

limited T <=> limited T'Class

No more, no less.

> I'm talking about replacing wheels in my car. Twice a year I *replace*
> summer wheels for winter ones and the other way round. I *don't
> assign* them.

If you mean assignment of pointers, then pointers are typed in Ada. If the
pointers here have the same type (like P is access Wheel'Class) then there
is nothing to talk about. You assign P to P. That is just irrelevant to the
problem at hand. The issue is about assigning *different* types from a
class, like ones from Wheel'Class (Goodyear, Michelin), or like ones from
(access Wheel)'Class. Note brackets! The latter is illegal in Ada, but if
it were legal, you'd have exactly the same thing.

>> Then
>> because your types algebra has classes one could create a class of. In the
>> end you will face the same question again: what is the assignment on the
>> class. All this referential stuff is just shifting subjects.
> 
> No, it's not shifting subjects.

Of course it is, because the types are same.

The issue of identity / references you are trying to bring in is
irrelevant. Multiple dispatch assignment is fully applicable to wheel and
car objects. When you "replace" wheels, you could perform different tasks
depending on the types of the old and new wheels .How these tasks can be
encapsulated into one replacement action?

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



  reply	other threads:[~2007-06-03  7:09 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-23 19:47 Ada Interfaces and the Liskov Substitution Principle Stefan Lucks
2007-05-23 20:32 ` Ludovic Brenta
2007-05-23 22:00   ` Randy Brukardt
2007-05-24  0:56     ` Anh Vo
2007-05-24 18:27     ` Pascal Obry
2007-05-24 18:39       ` Dmitry A. Kazakov
2007-05-24 18:51         ` Pascal Obry
2007-05-24 22:44         ` Randy Brukardt
2007-05-24  6:57   ` Stefan Lucks
2007-05-23 20:54 ` Maciej Sobczak
2007-05-23 21:58   ` Randy Brukardt
2007-05-24  7:29     ` Maciej Sobczak
2007-05-24  8:02       ` Dmitry A. Kazakov
2007-05-24 12:58         ` Maciej Sobczak
2007-05-24 13:42           ` Dmitry A. Kazakov
2007-05-24 22:08           ` Robert A Duff
2007-07-01  1:00             ` David Thompson
2007-05-24 22:58           ` Randy Brukardt
2007-05-25  7:52             ` Maciej Sobczak
2007-05-25  8:21               ` Dmitry A. Kazakov
2007-05-25 20:27                 ` Maciej Sobczak
2007-05-26  7:48                   ` Dmitry A. Kazakov
2007-05-27  8:30                     ` Maciej Sobczak
2007-05-27 10:04                       ` Dmitry A. Kazakov
2007-05-29  8:03                         ` Maciej Sobczak
2007-05-29 13:18                           ` Dmitry A. Kazakov
2007-05-29 13:32                             ` Dmitry A. Kazakov
2007-05-29 15:34                             ` Maciej Sobczak
2007-05-29 17:07                               ` Dmitry A. Kazakov
2007-05-30  7:40                                 ` Maciej Sobczak
2007-05-30  8:43                                   ` Dmitry A. Kazakov
2007-05-30 12:54                                     ` Maciej Sobczak
2007-05-30 13:56                                       ` Dmitry A. Kazakov
2007-05-30 16:49                                         ` vgodunko
2007-05-30 20:52                                         ` Maciej Sobczak
2007-05-31  8:15                                           ` Dmitry A. Kazakov
2007-05-31 13:46                                             ` Maciej Sobczak
2007-06-01  7:29                                               ` Dmitry A. Kazakov
2007-06-01 13:32                                                 ` Maciej Sobczak
2007-06-01 14:53                                                   ` Dmitry A. Kazakov
2007-06-01 20:31                                                     ` Maciej Sobczak
2007-06-02  8:19                                                       ` Dmitry A. Kazakov
2007-06-02 16:49                                                         ` Maciej Sobczak
2007-06-03  7:09                                                           ` Dmitry A. Kazakov [this message]
2007-06-03 22:04                                                             ` Maciej Sobczak
2007-06-04  8:08                                                               ` Dmitry A. Kazakov
2007-06-04 17:02                                                                 ` Maciej Sobczak
2007-06-05  8:35                                                                   ` Dmitry A. Kazakov
2007-06-05 22:12                                                                     ` Maciej Sobczak
2007-06-06  8:21                                                                       ` Dmitry A. Kazakov
2007-06-06 14:46                                                                         ` Maciej Sobczak
2007-06-06 15:11                                                                           ` Maciej Sobczak
2007-06-06 15:32                                                                       ` Markus E Leypold
2007-05-24 10:42       ` Georg Bauhaus
2007-05-24 13:41         ` Dmitry A. Kazakov
2007-05-25 16:59         ` Markus E Leypold
2007-05-28  9:52           ` Georg Bauhaus
2007-05-28 11:50             ` Dmitry A. Kazakov
2007-05-28 23:32               ` Georg Bauhaus
2007-05-29 12:05                 ` Dmitry A. Kazakov
2007-05-29 13:33                 ` Georg Bauhaus
2007-05-29 17:29                   ` Dmitry A. Kazakov
2007-05-29 20:46                     ` Georg Bauhaus
2007-05-30  7:53                       ` Dmitry A. Kazakov
2007-05-30 13:18                       ` Georg Bauhaus
2007-05-31 10:27                         ` Dmitry A. Kazakov
2007-05-31 11:44                         ` Georg Bauhaus
2007-06-01  7:37                           ` Dmitry A. Kazakov
2007-06-01 10:07                             ` Markus E Leypold
2007-06-01 11:41                             ` Georg Bauhaus
2007-06-01 13:07                               ` Dmitry A. Kazakov
2007-05-28 13:47             ` Markus E Leypold
2007-05-28 23:12               ` Georg Bauhaus
2007-05-28 13:56             ` Markus E Leypold
2007-05-28 23:00               ` Georg Bauhaus
2007-05-24  7:39 ` Dmitry A. Kazakov
2007-05-24 11:12   ` Stefan Lucks
2007-05-24 13:56     ` Dmitry A. Kazakov
2007-05-24 14:41       ` Stefan Lucks
2007-05-24 15:46         ` Dmitry A. Kazakov
2007-05-24 15:00       ` Georg Bauhaus
replies disabled

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