comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Quick question regarding limited type return syntax
Date: Mon, 4 Aug 2014 18:38:53 +0200
Date: 2014-08-04T18:38:53+02:00	[thread overview]
Message-ID: <b599l7xa69p2$.1mgyr1w2e2j0p$.dlg@40tude.net> (raw)
In-Reply-To: lrobq5$kvj$1@dont-email.me

On Mon, 04 Aug 2014 18:19:16 +0200, G.B. wrote:

> On 04.08.14 14:43, Dmitry A. Kazakov wrote:
> 
>> To make it clearer consider what would be the post-condition of Initialize:
>>
>>     type T is ...;
>>     type S is new T ...;
>>
>>     Initialize (X : in out T)
>>        ensure
>>           T'Operational (X)
>>
>> [*] or, maybe
>>
>>           S'Operational (X)
>>           T'Class'Operational (X)
>>           S'Class'Operational (X)
>>
>> Now, the precondition of a dispatching call on T'Class is obviously:
>>
>>     require
>>        T'Class'Is_Operational (X)
> 
> The model is circular, I think, in that you stipulate
> that 'Operational must be a "premiss" for a dispatching call,
> using "obvious" as the sole reason.

How isn't obvious and how is it circular?

A dispatching = primitive operation is defined on the whole class. That is
the definition of. The argument of a dispatching call is of the type
T'Class. This is also per definition.

How can you call an operation of the type on an object of this type when
the former is not yet operational?

> But while I think that
> everything else is a hack, some specific dispatching scenario
> need not even require the allocation of any of the derived
> type's components, for when no callee needs them, they don't
> matter, and still the whole object is 'Operational (in this
> sense).

Maybe, but this does not follow from the types at hand.

If the language allowed partial classes you could be able to express
something like

   T'Class \ S   -- All types derived from T but S

a dispatching call to anything but Foo of S might work. That would require
definition of a primitive operation of a partial class.

   procedure Foo (X : in out T \ S); -- Whatever

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


  reply	other threads:[~2014-08-04 16:38 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-30 23:51 Quick question regarding limited type return syntax NiGHTS
2014-07-31  0:02 ` Adam Beneschan
2014-07-31  0:56   ` NiGHTS
2014-07-31  0:48 ` Shark8
2014-07-31  1:00   ` NiGHTS
2014-07-31  1:29     ` Adam Beneschan
2014-07-31  1:38       ` NiGHTS
2014-07-31  4:01         ` Shark8
2014-08-01  2:12       ` Randy Brukardt
2014-08-01  3:40         ` Shark8
2014-08-01  7:57         ` J-P. Rosen
2014-08-01 19:23           ` Randy Brukardt
2014-08-01 19:37             ` J-P. Rosen
2014-08-01 20:53             ` Shark8
2014-08-02  7:11               ` Niklas Holsti
2014-08-02  7:34                 ` Dmitry A. Kazakov
2014-08-02 13:20                   ` Robert A Duff
2014-08-02 13:44                     ` Dmitry A. Kazakov
2014-08-02 14:34                       ` Robert A Duff
2014-08-02 16:56                         ` Dmitry A. Kazakov
2014-08-02 20:35                           ` Niklas Holsti
2014-08-03  7:30                             ` Dmitry A. Kazakov
2014-08-04  9:24                               ` Niklas Holsti
2014-08-04 10:42                                 ` G.B.
2014-08-04 11:39                                   ` Peter Chapin
2014-08-04 17:49                                     ` Niklas Holsti
2014-08-04 11:36                                 ` Peter Chapin
2014-08-04 12:43                                 ` Dmitry A. Kazakov
2014-08-04 16:19                                   ` G.B.
2014-08-04 16:38                                     ` Dmitry A. Kazakov [this message]
2014-08-04 16:51                                       ` G.B.
2014-08-04 17:23                                         ` Dmitry A. Kazakov
2014-08-04 19:37                                   ` Niklas Holsti
2014-08-05  8:30                                     ` Dmitry A. Kazakov
2014-08-05 19:24                                       ` Randy Brukardt
2014-08-03 16:35                           ` Robert A Duff
2014-08-02  8:02               ` Jacob Sparre Andersen
2014-08-02 19:20                 ` Shark8
2014-08-03 16:07                   ` Default values (Was: Quick question regarding limited type return syntax) Jacob Sparre Andersen
2014-08-04 21:29                     ` Randy Brukardt
replies disabled

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