comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: A bad counterintuitive behaviour of Ada about OO
Date: Fri, 8 Aug 2014 22:23:27 +0200
Date: 2014-08-08T22:23:27+02:00	[thread overview]
Message-ID: <1j93cm0uivuun$.diejr5qg4j7a$.dlg@40tude.net> (raw)
In-Reply-To: iD9Fv.279332$YC3.170092@fx04.iad

On Fri, 08 Aug 2014 13:34:36 -0600, Shark8 wrote:

> On 08-Aug-14 05:20, Dmitry A. Kazakov wrote:
>> And they [subtypes] break in-operations. As an example consider:
>>
>>     X : Integer := -1;
>>
>> Now substitute Positive for Integer.
> 
> That's going the wrong way.
> You're narrowing the set when you move to the subtype, so obviously not 
> all values will be present; this is a Good Thing.

No idea what you mean. It is not substitutable. Period.

[...]
>      Subtype Social_Security_Number is String(1..9)
>      with Dynamic_Predicate =>
>        (for all C of Social_Security_Number => C in Digit);
[...]

> We *don't* want to substitute STRING for Social_Security_Number or

You substitute Social_Security_Number for String when you inherit String
operations, like S'Length.

You substitute String for Social_Security_Number when you export
Social_Security_Number operations to String. Ada subtypes allows that too.
 
>> Subsetting means nothing to subtyping and both very little to
>> substitutability. All three are different things.
> 
> Ridiculous; as shown above subtyping *is* the subsetting of the valid 
> values: Social_Security_Number in particular has only 10**9 values 
> rather than the Σ(n=0..Positive'Last) 256**n values that the STRING type 
> would have.

Which does not imply anything to either subtyping or substitutability. Here
are the definitions:

def. S is a subtype T if it inherits the interface of T. E.g. inherits an
operation of T. It is also called subclassing.

Example: Positive is a subtype of Integer because it inherits +.

def. S is substitutable for T in an operation f if you can pass an instance
of S where an instance of T is expected.

Example: Circle is substitutable for Ellipse in Area. Circle is not
substitutable for Ellipse in Resize. This is so-called Circle-Ellipse or
Square-Rectangle controversy.

The notion of subtypes based on substitutablity (behavioral subtyping) is
so-called LSP-subtyping.

>> Huh, great mathematical problems are about fighting constraints. E.g.
>> solving x**n + y**n = z**n in real numbers vs. in natural ones. No big
>> deal? Same applies to programming, it is mostly about working around
>> constraints.
> 
> ...that's the most idiotic thing I've *ever* heard you say.
> Constraints are fundamental for mathematical proofs; they are essential 
> for making robust programs. (HINT: definitions are often constraints.)

Hint: Diophantine equation

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


  reply	other threads:[~2014-08-08 20:23 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-05 20:09 A bad counterintuitive behaviour of Ada about OO Victor Porton
2014-08-05 20:58 ` Simon Wright
2014-08-05 21:06   ` Victor Porton
2014-08-05 21:51     ` Niklas Holsti
2014-08-05 22:13       ` Victor Porton
2014-08-05 22:35   ` Victor Porton
2014-08-05 23:25     ` Adam Beneschan
2014-08-05 20:59 ` Dmitry A. Kazakov
2014-08-05 21:07   ` Victor Porton
2014-08-05 22:39     ` Shark8
2014-08-05 21:11   ` Victor Porton
2014-08-06  7:26     ` Dmitry A. Kazakov
2014-08-07  7:41       ` Maciej Sobczak
2014-08-07  8:50         ` Dmitry A. Kazakov
2014-08-08  7:54           ` Maciej Sobczak
2014-08-08  8:14             ` Dmitry A. Kazakov
2014-08-08 13:06               ` Maciej Sobczak
2014-08-08 13:22                 ` Dmitry A. Kazakov
2014-08-08 22:32                   ` Randy Brukardt
2014-08-09 16:11                   ` Maciej Sobczak
2014-08-09 16:48                     ` Dmitry A. Kazakov
2014-08-10 20:55                       ` Maciej Sobczak
2014-08-11  7:41                         ` Dmitry A. Kazakov
2014-08-11  7:58                           ` Maciej Sobczak
2014-08-11  8:23                             ` Dmitry A. Kazakov
2014-08-12  7:50                               ` Maciej Sobczak
2014-08-11 11:35                             ` G.B.
2014-08-08 22:26                 ` Randy Brukardt
2014-08-08  8:34             ` Shark8
2014-08-08 12:59               ` Maciej Sobczak
2014-08-08 22:37                 ` Randy Brukardt
2014-08-08 22:53                   ` Jeffrey Carter
2014-08-07  8:58         ` J-P. Rosen
2014-08-07  9:40           ` Dmitry A. Kazakov
2014-08-07 11:17             ` J-P. Rosen
2014-08-07 12:28               ` Dmitry A. Kazakov
2014-08-07 13:34                 ` J-P. Rosen
2014-08-07 16:10                   ` Dmitry A. Kazakov
2014-08-07 18:14                     ` Robert A Duff
2014-08-07 19:41                       ` Dmitry A. Kazakov
2014-08-07 20:53                         ` Robert A Duff
2014-08-08  7:43                           ` Dmitry A. Kazakov
2014-08-08  8:18                             ` Shark8
2014-08-08  7:45                     ` J-P. Rosen
2014-08-08  8:04                       ` Dmitry A. Kazakov
2014-08-08  8:55                         ` J-P. Rosen
2014-08-08  9:13                           ` Dmitry A. Kazakov
2014-08-08 10:01                             ` J-P. Rosen
2014-08-08 10:53                               ` Dmitry A. Kazakov
2014-08-08 10:56                                 ` Victor Porton
2014-08-08 12:00                                 ` J-P. Rosen
2014-08-08 13:11                                   ` Dmitry A. Kazakov
2014-08-08 13:53                                     ` J-P. Rosen
2014-08-08 20:23                                       ` Dmitry A. Kazakov
2014-08-07 20:29                   ` Shark8
2014-08-08  7:49                     ` J-P. Rosen
2014-08-08  8:12                       ` Shark8
2014-08-08  8:26                         ` Dmitry A. Kazakov
2014-08-08 11:10                           ` Shark8
2014-08-08 11:20                             ` Dmitry A. Kazakov
2014-08-08 19:34                               ` Shark8
2014-08-08 20:23                                 ` Dmitry A. Kazakov [this message]
2014-08-07 15:03           ` Jeffrey Carter
2014-08-08  7:48           ` Maciej Sobczak
2014-08-08  8:51             ` J-P. Rosen
2014-08-08 13:25               ` Maciej Sobczak
2014-08-08 13:34                 ` J-P. Rosen
2014-08-08 13:52                   ` Dmitry A. Kazakov
2014-08-08 14:21                     ` J-P. Rosen
2014-08-08 20:23                       ` Dmitry A. Kazakov
2014-08-08 22:08                     ` Randy Brukardt
2014-08-08 22:18                 ` Randy Brukardt
2014-08-06  4:50 ` Per Sandberg
replies disabled

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