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: Fri, 1 Jun 2007 09:29:18 +0200
Date: 2007-06-01T09:26:58+02:00	[thread overview]
Message-ID: <ecqquwlxctjw.1xdlfcbfj487b.dlg@40tude.net> (raw)
In-Reply-To: 1180619211.595952.116690@k79g2000hse.googlegroups.com

On 31 May 2007 06:46:51 -0700, Maciej Sobczak wrote:

> On 31 Maj, 10:15, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> wrote:
> 
>> You cannot make a class of non-limited types limited.
> 
> Why not? Let's just say so or write it in RM.
>
>> It would be inconsistent.
> 
> Protected objects are limited even if they contain only Integers.
> The inconsistencies are there anyway, so why fighting for unrealistic
> purity?

Container /= what it occasionally contains. The identity of protected
object is essential for synchronization mechanism, for obvious reasons.
This is why the protected object has identity and consequently its type was
made limited. You cannot abstract Integer from a protected object of.

>> A specific object is just a constrained instance of a
>> class-wide object.
> 
> Nothing prevents it from having additional operations (in the specific
> view, not class-wide).

Not in the same package, where adding operations after the freezing point
is forbidden. The reason is same - inconsistency.

You are trying to invent some alternative meaning for class-wide. What for?
If you think that the concept of values from types sets is wrong, say why.

>> This is the model of what is going on. Whether the
>> objects from the class should or not have assignment or any other operation
>> depends solely on the problem domain. It is the programmer's choice.
> 
> Exactly, but the language "helps" the programmer to make some choices.
> In Ada most of the time the justification for these is "it's safer".
> In my opinion it is safer to not have assignments in class-wide types
> and I have nothing against the language to remind me.

It is safe, when it functions as I described earlier.

Again, whatever the compiler does, the code generated shall not render to
"raise Constraint_Error" or for that matter "format C: /q".

>>>>> Even with strings, you might want to share the strategy for character
>>>>> encoding.
>>
>>>> I don't. String has a value, only this counts.
>>
>>> According to the above distinction, string is a value type.
>>
>> As well as the polymorphic string from the class of:
>>
>> (UTF-8, "abc") := (ASCII, "def");  -- Why is it a problem?
> 
> It assumes too much.

I don't understand this. Is it semantically wrong?

>>> Internal strategy can be a class. That's a good place for dispatch
>>> (note: I use the term "strategy" from the OO design pattern with the
>>> same name).
>>
>> This is what I meant. Let's move to the internals. How the internal class
>> can be assigned? Can it?
> 
> You don't need to assign it. It is enough if you can replace it.

Care to explain difference? Doesn't assignment replace one value by
another?

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



  reply	other threads:[~2007-06-01  7:29 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 [this message]
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
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