comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Seeking for papers about tagged types vs access to subprograms
Date: Fri, 3 May 2013 08:49:05 +0200
Date: 2013-05-03T08:49:05+02:00	[thread overview]
Message-ID: <pekgjwb0osah.d9u979p35bbw$.dlg@40tude.net> (raw)
In-Reply-To: klun14$l17$1@munin.nbi.dk

On Thu, 2 May 2013 16:49:18 -0500, Randy Brukardt wrote:

> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
> news:1d73jn954z90t.ze60axadntyr$.dlg@40tude.net...
>> On Wed, 1 May 2013 20:09:46 -0500, Randy Brukardt wrote:
> ...
>>> Nitpick: "new" is not an operator, it is an *operation*, things whose
>>> behavior cannot be modified directly. Like membership, it would be hard to
>>> make "new" an operator because one of the arguments can be a type (rather
>>> than an object or value), and it's hard to see how that could be mapped to
>>> an Ada function. (Adding type parameters seems over the top.)
>>
>>   type Root_Access_Type is interface ...;
>>   function "new" return Root_Access_Type is abstract;
>>
>> If access types were "untagged" class, "new" would be a plain primitive
>> operation.
> 
> You're missing something here, and that's the information about the 
> designated type/object. If you have:
> 
>      Ptr := new Piece (Color => Black);
> 
> that information about the discriminant has to be transmitted somehow as it 
> can controls the size of the allocated object.

Yes, but my response was to your point about the object's type. You don't
need explicit types with primitive operations, provided, the result is
properly typed. In all cases where Ada 83 used [sub]type specification:

   T'Image (X)
   new T (X)
   T (X)

etc, this was because of lack of typing.

Regarding discriminants, this is not a problem, because the signature of
the predefined "new" would be generated by the compiler, which could
include necessary parameters as it does now.

BTW, for constructors and allocators, there could a [sub]type attribute
T'Constraints which would yield a null record type with the discriminants
of T. E.g. let

   type Foo (X : Integer; Y : Boolean) is record
       I : Integer
   end record;

then Foo'Constraints is

   type Foo'Constraints (X : Integer; Y : Boolean) is null record;

This type + a mechanism to flatten tuples would give the signature you
wanted for "new" without compiler magic.

> Similar thoughts apply to memberships like "obj in T'Class". One might be 
> able to write a function to implement that, but you'd have to pass tags to 
> do so, which would bear no resemblance to normal subprogram call (it would 
> be much more like the relationship of a storage pool to an allocator).

To me X in T and X in T'Class are syntax sugar for operations on tags:

   X in T <=> X'Tag = T'Tag
   X in T'Class <=> X'Tag <= T'Tag (tree order)

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

      reply	other threads:[~2013-05-03  6:49 UTC|newest]

Thread overview: 202+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-28  5:14 Seeking for papers about tagged types vs access to subprograms Yannick Duchêne (Hibou57)
2013-04-30  0:31 ` Yannick Duchêne (Hibou57)
2013-04-30  0:41   ` Shark8
2013-04-30  1:00     ` Yannick Duchêne (Hibou57)
2013-05-02  1:18       ` Randy Brukardt
2013-05-02  2:29         ` Jeffrey Carter
2013-05-06 10:00   ` Yannick Duchêne (Hibou57)
2013-05-06 10:18     ` Dmitry A. Kazakov
2013-05-06 10:55       ` Yannick Duchêne (Hibou57)
2013-05-06 12:11         ` Dmitry A. Kazakov
2013-05-06 13:16           ` Yannick Duchêne (Hibou57)
2013-05-06 14:16             ` Dmitry A. Kazakov
2013-05-06 15:15               ` Yannick Duchêne (Hibou57)
2013-05-06 18:55                 ` Dmitry A. Kazakov
2013-05-06 20:05                   ` Adam Beneschan
2013-05-07  7:30                     ` Dmitry A. Kazakov
2013-05-10  4:33                     ` Yannick Duchêne (Hibou57)
2013-05-07 20:35                   ` Jacob Sparre Andersen news
2013-05-07 20:44                     ` Yannick Duchêne (Hibou57)
2013-05-07 22:32                     ` Dennis Lee Bieber
2013-05-07 23:10                       ` Adam Beneschan
2013-05-08  0:18                     ` Shark8
2013-05-10  4:34                       ` Yannick Duchêne (Hibou57)
2013-05-10  8:27                         ` Simon Wright
2013-05-10 18:08                         ` Niklas Holsti
2013-05-08  7:38                     ` Dmitry A. Kazakov
2013-05-08  7:59                       ` Yannick Duchêne (Hibou57)
2013-05-08  8:23                         ` Dmitry A. Kazakov
2013-05-08  9:39                           ` Yannick Duchêne (Hibou57)
2013-05-08  9:51                             ` Yannick Duchêne (Hibou57)
2013-05-08 10:23                             ` Dmitry A. Kazakov
2013-05-08 11:08                               ` Yannick Duchêne (Hibou57)
2013-05-08 15:29                                 ` Dmitry A. Kazakov
2013-05-08 16:13                                   ` Yannick Duchêne (Hibou57)
2013-05-08 18:17                                     ` Dmitry A. Kazakov
2013-05-10  4:35                                       ` Yannick Duchêne (Hibou57)
2013-05-08 20:27                                   ` Randy Brukardt
2013-05-09  7:33                                     ` Dmitry A. Kazakov
2013-05-09 22:19                                       ` Randy Brukardt
2013-05-10  3:29                                         ` Yannick Duchêne (Hibou57)
2013-05-10  4:16                                           ` Yannick Duchêne (Hibou57)
2013-05-10  8:42                                           ` Dmitry A. Kazakov
2013-05-10 11:18                                             ` Yannick Duchêne (Hibou57)
2013-05-10 12:15                                               ` Dmitry A. Kazakov
2013-05-10 12:40                                                 ` Yannick Duchêne (Hibou57)
2013-05-10 12:59                                                   ` Yannick Duchêne (Hibou57)
2013-05-10 13:54                                                   ` Dmitry A. Kazakov
2013-05-10 14:01                                                     ` Yannick Duchêne (Hibou57)
2013-05-10 14:27                                                       ` Dmitry A. Kazakov
2013-05-10 15:20                                                         ` Yannick Duchêne (Hibou57)
2013-05-11  7:22                                                         ` Georg Bauhaus
2013-05-10 18:04                                           ` Niklas Holsti
2013-05-10 19:33                                             ` Yannick Duchêne (Hibou57)
2013-05-11  0:18                                             ` Randy Brukardt
2013-05-11  7:14                                               ` Yannick Duchêne (Hibou57)
2013-05-11 21:06                                               ` Niklas Holsti
2013-05-11 23:19                                                 ` Shark8
2013-05-12  6:09                                                   ` Niklas Holsti
2013-05-14  2:02                                                     ` Randy Brukardt
2013-05-12  6:44                                                 ` Yannick Duchêne (Hibou57)
2013-05-12  8:10                                                   ` Niklas Holsti
2013-05-12  8:49                                                     ` Yannick Duchêne (Hibou57)
2013-05-12 18:56                                                     ` Jeffrey Carter
2013-05-12 22:15                                                       ` Robert A Duff
2013-05-13  0:26                                                         ` Jeffrey Carter
2013-05-13  7:03                                                         ` Yannick Duchêne (Hibou57)
2013-05-13 13:15                                                           ` Robert A Duff
2013-05-13 17:30                                                             ` Jeffrey Carter
2013-05-13 18:01                                                               ` J-P. Rosen
2013-05-13 18:39                                                                 ` Bill Findlay
2013-05-13 18:57                                                                 ` Jeffrey Carter
2013-05-13 19:13                                                                 ` Robert A Duff
2013-05-13 20:38                                                                   ` J-P. Rosen
2013-05-14  7:26                                                                     ` Dmitry A. Kazakov
2013-05-14 20:00                                                                       ` Robert A Duff
2013-05-15 10:10                                                                         ` Dmitry A. Kazakov
2013-05-14 19:56                                                                     ` Robert A Duff
2013-05-15  4:24                                                                       ` Yannick Duchêne (Hibou57)
2013-05-15  9:28                                                                         ` Dmitry A. Kazakov
2013-05-15 11:31                                                                           ` Peter C. Chapin
2013-05-15 12:32                                                                             ` Yannick Duchêne (Hibou57)
2013-05-15 19:59                                                                               ` Peter C. Chapin
2013-05-15 20:56                                                                                 ` Dmitry A. Kazakov
2013-05-15 12:46                                                                             ` Dmitry A. Kazakov
2013-05-15 18:15                                                                             ` Jeffrey Carter
2013-05-15 19:18                                                                               ` Eryndlia Mavourneen
2013-05-15 19:57                                                                                 ` Dmitry A. Kazakov
2013-05-15 20:37                                                                                   ` Yannick Duchêne (Hibou57)
2013-05-15 20:48                                                                                     ` Dmitry A. Kazakov
2013-05-16 12:45                                                                                       ` Eryndlia Mavourneen
2013-05-16 17:16                                                                                         ` Jeffrey Carter
2013-05-16  9:41                                                                                 ` G.B.
2013-05-16 12:35                                                                                   ` J-P. Rosen
2013-05-15 14:21                                                                       ` J-P. Rosen
2013-05-14  2:14                                                         ` Randy Brukardt
2013-05-14 19:35                                                           ` Robert A Duff
2013-05-15  4:11                                                             ` Yannick Duchêne (Hibou57)
2013-05-16 23:36                                                             ` Randy Brukardt
2013-05-13  5:21                                                       ` Niklas Holsti
2013-05-13  7:22                                                         ` Dmitry A. Kazakov
2013-05-13  8:23                                                           ` Yannick Duchêne (Hibou57)
2013-05-13 19:20                                                           ` Niklas Holsti
2013-05-14  8:14                                                             ` Dmitry A. Kazakov
2013-05-10  3:47                                         ` Yannick Duchêne (Hibou57)
2013-05-11  0:22                                           ` Randy Brukardt
2013-05-11  7:22                                             ` Yannick Duchêne (Hibou57)
2013-05-10  3:59                                         ` Yannick Duchêne (Hibou57)
2013-05-10  4:03                                         ` Yannick Duchêne (Hibou57)
2013-05-10  7:48                                         ` Dmitry A. Kazakov
2013-05-10  8:12                                           ` Yannick Duchêne (Hibou57)
2013-05-10 15:11                                             ` Yannick Duchêne (Hibou57)
2013-05-11  0:42                                           ` Randy Brukardt
2013-05-11  6:37                                             ` Dmitry A. Kazakov
2013-05-11  7:06                                               ` Georg Bauhaus
2013-05-11  7:42                                                 ` Dmitry A. Kazakov
2013-05-11  8:14                                                   ` Yannick Duchêne (Hibou57)
2013-05-14  2:29                                                   ` Randy Brukardt
2013-05-14  7:44                                                     ` Dmitry A. Kazakov
2013-05-14 11:34                                                       ` Yannick Duchêne (Hibou57)
2013-05-14 12:16                                                         ` Dmitry A. Kazakov
2013-05-14 13:13                                                           ` Yannick Duchêne (Hibou57)
2013-05-14 18:41                                                           ` Randy Brukardt
2013-05-15 11:20                                                           ` Peter C. Chapin
2013-05-15 13:00                                                             ` Dmitry A. Kazakov
2013-05-15 21:12                                                               ` Peter C. Chapin
2013-05-15 22:08                                                                 ` Dmitry A. Kazakov
2013-05-16 11:31                                                                   ` Peter C. Chapin
2013-05-16 11:56                                                                     ` Yannick Duchêne (Hibou57)
2013-05-16 12:20                                                                     ` Dmitry A. Kazakov
2013-05-16 13:10                                                                       ` Peter C. Chapin
2013-05-16 13:54                                                                         ` Dmitry A. Kazakov
2013-05-16 17:15                                                                           ` G.B.
2013-05-16 18:09                                                                             ` Peter C. Chapin
2013-05-16 19:16                                                                               ` Dmitry A. Kazakov
2013-05-16 21:59                                                                                 ` Georg Bauhaus
2013-05-17 19:57                                                                                   ` Dmitry A. Kazakov
2013-05-16 21:20                                                                               ` Niklas Holsti
2013-05-16 23:20                                                                                 ` Peter C. Chapin
2013-05-17  5:25                                                                                   ` Niklas Holsti
2013-05-17  7:53                                                                                   ` Georg Bauhaus
2013-05-16 13:09                                                                     ` Eryndlia Mavourneen
2013-05-11  7:58                                               ` Yannick Duchêne (Hibou57)
2013-05-11  9:08                                                 ` Dmitry A. Kazakov
2013-05-11 18:14                                                 ` Niklas Holsti
2013-05-11  8:03                                               ` Yannick Duchêne (Hibou57)
2013-05-11  9:16                                                 ` Dmitry A. Kazakov
2013-05-11 11:49                                                   ` Georg Bauhaus
2013-05-11 12:25                                                     ` Dmitry A. Kazakov
2013-05-11 22:51                                                   ` Robert A Duff
2013-05-12  6:02                                                     ` Dmitry A. Kazakov
2013-05-12  6:25                                                       ` Yannick Duchêne (Hibou57)
2013-05-12  7:14                                                         ` Dmitry A. Kazakov
2013-05-12  7:37                                                           ` Simon Wright
2013-05-12  7:59                                                             ` Dmitry A. Kazakov
2013-05-12  8:21                                                           ` Yannick Duchêne (Hibou57)
2013-05-12  9:25                                                             ` Dmitry A. Kazakov
2013-05-12  9:32                                                               ` Yannick Duchêne (Hibou57)
2013-05-12 10:07                                                                 ` Dmitry A. Kazakov
2013-05-11  7:32                                             ` Yannick Duchêne (Hibou57)
2013-05-11  7:46                                             ` Yannick Duchêne (Hibou57)
2013-05-14 12:46                                         ` Weaker typing as a part of the way to stronger typing? (Was: Seeking for papers about tagged types vs access to subprograms) Jacob Sparre Andersen
2013-05-14 19:08                                           ` Randy Brukardt
2013-05-10 16:02                                       ` Seeking for papers about tagged types vs access to subprograms Yannick Duchêne (Hibou57)
2013-05-08 20:12                       ` Randy Brukardt
2013-05-09  7:50                         ` Dmitry A. Kazakov
2013-05-09 21:43                           ` Randy Brukardt
2013-05-10  4:39                             ` Yannick Duchêne (Hibou57)
2013-05-10  7:49                             ` Dmitry A. Kazakov
2013-05-11  0:09                               ` Randy Brukardt
2013-05-11  6:40                                 ` Dmitry A. Kazakov
2013-05-14  3:01                                   ` Randy Brukardt
2013-05-14  8:32                                     ` Dmitry A. Kazakov
2013-05-14 19:02                                       ` Randy Brukardt
2013-05-15  4:43                                         ` Yannick Duchêne (Hibou57)
2013-05-16 23:27                                           ` Randy Brukardt
2013-05-15  9:14                                       ` G.B.
2013-05-15 12:08                                         ` Dmitry A. Kazakov
2013-05-15 14:43                                           ` G.B.
2013-05-15 15:02                                             ` Dmitry A. Kazakov
2013-05-14 19:21                                     ` Robert A Duff
2013-05-10  4:29                   ` Yannick Duchêne (Hibou57)
2013-05-07  1:14             ` Randy Brukardt
2013-05-07  2:42               ` Yannick Duchêne (Hibou57)
2013-05-07  1:09     ` Randy Brukardt
2013-05-07  7:41       ` Dmitry A. Kazakov
2013-05-07 20:27         ` Jacob Sparre Andersen news
2013-05-07 20:40           ` Yannick Duchêne (Hibou57)
2013-05-08  7:57           ` Dmitry A. Kazakov
2013-05-08 20:37             ` Randy Brukardt
2013-05-09  8:04               ` Dmitry A. Kazakov
2013-05-09 21:33                 ` Randy Brukardt
2013-05-10  7:15                   ` Dmitry A. Kazakov
2013-05-11  1:00                     ` Randy Brukardt
2013-05-11  7:08                       ` Yannick Duchêne (Hibou57)
2013-05-11  7:12                       ` Dmitry A. Kazakov
2013-05-14  2:52                         ` Randy Brukardt
2013-05-11  5:31                     ` Simon Wright
2013-05-11  7:22                       ` Dmitry A. Kazakov
2013-05-02  1:09 ` Randy Brukardt
2013-05-02  6:56   ` Dmitry A. Kazakov
2013-05-02 21:49     ` Randy Brukardt
2013-05-03  6:49       ` Dmitry A. Kazakov [this message]
replies disabled

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