comp.lang.ada
 help / color / mirror / Atom feed
From: Dmitry A. Kazakov <mailbox@dmitry-kazakov.de>
Subject: Re: Proposed change to BC iterator parameters
Date: Thu, 11 Dec 2003 09:33:06 +0100
Date: 2003-12-11T09:33:06+01:00	[thread overview]
Message-ID: <s6agtvcspj4mel9gc932kumbtckt9mbfn9@4ax.com> (raw)
In-Reply-To: wcck7542s8g.fsf@shell01.TheWorld.com

On 10 Dec 2003 18:00:31 -0500, Robert A Duff
<bobduff@shell01.TheWorld.com> wrote:

>Here, I think you're talking about regular private types in
>packages (as opposed to generic formals).  One idea is to say:
>
>    type T is private;
>    function "="(X, Y: T) return Boolean is abstract;
>
>Then clients can't call predefined "=".
>
>(But predefined "=" reemerges in generics!  And records.)
>
>I've also done things like this (in the visible part):
>
>    type T is private;
>
>    function Predefined_Equal(X, Y: T) return Boolean renames "=";
>    -- For use only in the package body!
>
>    function "="(X, Y: T) return Boolean is abstract;
>
>Unfortunately, the Ada compiler does not understand the comment, "-- For
>use only in the package body!".  You say above, ``with the capability of
>defining "=" for either type.''  But it's not trivial to make that "="
>be the predefined one.

Sticking to implemetation inheritance is the actual problem. Why do
not we have true abstract interfaces? For example:

type Can_Do_Nothing is <interface-keyword>;

type Can_Only_Compare is <interface-keyword>;
function "=" (X, Y : Can_Only_Compare) return Boolean is abstract;

type Can_Copy_Assign_Compare is <interface-keyword>;
<some-syntactic-sugar-defining-abstract-copy-constructor>
<some-syntactic-sugar-defining-abstract-assignment>
function "=" (X, Y : Can_Copy_Assign_Compare)
   return Boolean is abstract;
...

Then an integer without predefined arithmetic could be an
implementation of Can_Copy_Assign_Compare via private inheritance from
Integer :

   type My_Number is new private Can_Copy_Assign_Compare;
private
   type My_Number is new Integer;
   
--
Regards,
Dmitry Kazakov
http://www.dmitry-kazakov.de



  parent reply	other threads:[~2003-12-11  8:33 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-10 13:36 Proposed change to BC iterator parameters amado.alves
2003-12-10 16:47 ` Proposed change to BC iterator parameters [limitedness] Georg Bauhaus
2003-12-10 17:39 ` Proposed change to BC iterator parameters Martin Krischik
2003-12-10 18:22 ` Jeffrey Carter
2003-12-10 23:00   ` Robert A Duff
2003-12-11  1:00     ` Jeffrey Carter
2003-12-11 15:09       ` Robert A Duff
2003-12-11  8:33     ` Dmitry A. Kazakov [this message]
2003-12-10 20:50 ` Simon Wright
2003-12-10 23:12 ` Robert A Duff
2003-12-11  5:07   ` Steve
2003-12-11 15:24     ` Robert A Duff
2003-12-11 17:39       ` Jeffrey Carter
2003-12-12 22:22         ` Robert A Duff
2003-12-13  0:57           ` Jeffrey Carter
2003-12-17 20:59             ` Robert A Duff
2003-12-18 10:05               ` Dmitry A. Kazakov
2003-12-18 18:14                 ` Robert A Duff
2003-12-19 10:53                   ` Dmitry A. Kazakov
2003-12-19 16:17                     ` Georg Bauhaus
2003-12-19 17:19                       ` Dmitry A. Kazakov
2003-12-19 22:51                         ` Robert A Duff
2003-12-20 12:20                           ` Dmitry A. Kazakov
2003-12-19 22:47                       ` Robert A Duff
2003-12-20  2:11                         ` Stephen Leake
2003-12-20 19:08                         ` Robert I. Eachus
2003-12-21 11:39                           ` Simon Wright
2003-12-21 18:13                             ` Robert I. Eachus
2003-12-21 13:58                           ` Dmitry A. Kazakov
2003-12-22  1:25                             ` Robert I. Eachus
     [not found]         ` <916oa1-c93.ln1@beastie.ix.netcom.com>
2003-12-13 16:57           ` Simon Wright
2003-12-12  5:29     ` Simon Wright
2003-12-12 22:26       ` Robert A Duff
2003-12-13 16:55         ` Simon Wright
2003-12-13 17:27           ` Dmitry A. Kazakov
2003-12-13  2:44       ` Steve
  -- strict thread matches above, loose matches on Subject: below --
2003-12-23 10:40 amado.alves
2003-12-19 15:53 amado.alves
2003-12-19 23:05 ` Robert A Duff
2003-12-11 16:02 amado.alves
2003-12-11 15:05 ada_wizard
2003-12-11 16:45 ` Robert A Duff
2003-12-11 12:56 amado.alves
2003-12-17 20:25 ` Robert A Duff
2003-12-11 12:43 amado.alves
2003-12-11 12:33 amado.alves
2003-12-10 14:39 amado.alves
2003-12-10  5:46 Simon Wright
2003-12-10 18:12 ` Jeffrey Carter
2003-12-11 16:10   ` Martin Krischik
2003-12-10 20:59 ` Simon Wright
replies disabled

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