comp.lang.ada
 help / color / mirror / Atom feed
From: Maciej Sobczak <see.my.homepage@gmail.com>
Subject: Re: Ada Interfaces and the Liskov Substitution Principle
Date: Fri, 01 Jun 2007 13:31:04 -0700
Date: 2007-06-01T13:31:04-07:00	[thread overview]
Message-ID: <1180729864.936057.258970@p47g2000hsd.googlegroups.com> (raw)
In-Reply-To: <1r1lyrsyvr52v$.vx1t785sxb9u.dlg@40tude.net>

On 1 Cze, 16:53, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
wrote:

> or claiming that there is a semantic difference between X:=Y
> and Assign(X,Y). I don't want a language with magical, semantically
> non-decomposable assignments.

You have them at the level of fundamental types.
You can treat X:=Y and Assign(X,Y) to be equivalent for *your* T (and
if you have complete control over overloading of assignment then that
might be actually the case), but at some level of detail they have to
be implemented in terms of *non-decomposable* assignments of
fundamental types anyway. Now, the difference between T and T'Class is
that operations with T can be statically decomposed down to this non-
decomposable bricks. With T'Class it's just impossible to do this
mechanically and it's unrealistic to expect it from the programmer for
any non-trivial hierarchy.

> > You can replace a Circle with a Triangle but you better not try to
> > assign them.
>
> This is not an explanation. Show a semantic difference between changing a
> name binding from one value to another by A) "replacement" and B)
> "assignment."

No problem. Replacement is when you just stop refering to X and start
refering to Y (or its clone if the objects are mutable). Assignment is
when you decompose down to real, hard-core-metal-and-concrete ':=' on
fundamental types. The difference is that (in Ada terms) replacement
allows you to change the tag. Assignment cannot do this.

> 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.
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.

That's why T'Class, even though very interesting from the language
construction point of view, cannot entirely include all functionality
of access variable to T'Class (or pointer to base class in C++
jargon).

> Then let "assignment" :=
> "replacement,"

Do you mean:
- let's replace assignment by replacement, or
- let's assign replacement to assignment?

;-)

> > No, hierarchies and values don't go together. I might lack the
> > formalism to prove it, but my observations are confirming: I've never
> > seen it in the wild.
>
> Lacking formalism is not an excuse, it is an indictment. (:-))

I don't really think I will ever convince you, but this discussion is
an interesting exercise anyway. ;-)

T'Class should be limited.

--
Maciej Sobczak
http://www.msobczak.com/




  reply	other threads:[~2007-06-01 20:31 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 [this message]
2007-06-02  8:19                                                       ` Dmitry A. Kazakov
2007-06-02 16:49                                                         ` Maciej Sobczak
2007-06-03  7:09                                                           ` Dmitry A. Kazakov
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