From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: What would you like in Ada202X?
Date: Fri, 11 May 2012 00:22:30 +0300
Date: 2012-05-11T00:22:30+03:00 [thread overview]
Message-ID: <a12psmFskuU1@mid.individual.net> (raw)
In-Reply-To: <joc6as$ab0$1@munin.nbi.dk>
On 12-05-09 01:22 , Randy Brukardt wrote:
> "Niklas Holsti"<niklas.holsti@tidorum.invalid> wrote in message
> news:a0rsroFp8lU1@mid.individual.net...
>> On 12-05-08 03:48 , Randy Brukardt wrote:
> ...
>>> It seemed like a useful idea back in the day,
>>
>> I think that extending enumeration types by "deepening" is a different
>> idea than the AI95-261 "widening" idea. Don't you think that they are
>> logically different?
>
> The details are different, but the basic idea (adding more literals) is
> unchanged. And the use is in adding more literals, the details on exactly
> how you do that are much less important.
Perhaps I did not describe it well, but I am surprised that you don't
see more difference between "widening" and "deepening". Note that:
- The "widening" extension only adds literals. The derived type has all
literals of the parent type, plus the added literals.
- The "deepening" extension *replaces* some parent literals with new
literals. The derived type need not have any literals in common with the
parent type. But each parent-type literal corresponds to a range of
derived-type literals.
A big difference is that for "widening", there is a natural conversion
(embedding, really) from the parent type to the derived type, while for
"deepening" the natural conversion goes the other way, from the derived
type to the parent type.
>>> but to be really useful, we
>>> need the equivalent of class-wide operations.
>>
>> That is the main question: do we?
>
> We need class-wide operations for Integer and Float and (especially) String,
> so it's hard to imagine how we could avoid needing them for such an
> enumeration!
>
> For example:
> Put (X : in Root_Integer'Class);
> is much more useable than a generic that you have to instantiation for each
> kind of type. (Some operations really do cross-cut types.)
Ah, I didn't realise that you meant such a radical enlargement of the
present tagged-type class-wide programming. Is there an AI on that? I
looked for one, but did not find any.
I agree that if a future Ada allows 'Class on Root_Integer (and
presumably on most or all other types, too), then "deepened"
enumerations would also have to support that.
> Inheritance of operations is virtually useless without class-wide
> operations. Note that class-wide operations don't necessarily have to
> involve dispatching, although that does seem like the most sensible model.
> Dmitry has pointed out repeatedly that one does not need to store tags with
> values of specific types; they can be added when converted to a class-wide
> type and that makes the most sense for elementary and array tagged types.
Ok, I see how that can work: you synthesize tags and perhaps other "type
descriptors" and pass them as hidden parameters to class-wide
operations. (I guess that your experience in implementing code-sharing
generics would be useful, no?)
>> It seems to me that adding class-wide operations would force to
>> use some kind of tags, call by reference, and view conversions, and then
>> it becomes so similar to tagged types that it is not worth it.
>
> Umm, that's when it *does* become worth it. The problem is untagged types
> are pretty hard to use.
Do you mean they are hard to use in current Ada, or hard to use with
class-wide operations in the future Ada?
> (Note that I disagree about call-by-reference, but
> that's a detail.)
I'd be interested in your view on that, since it seems to bear on the
problem of conversions between parent types and "deepened" types.
>> I think the idea of "deepened" enumeration types is worth pursuing only if
>> it is useful without class-wide operations.
>
> Then don't bother. IMHO, at least.
Since I respect your opinion very much, I will have to think about
class-wide programming for "deepened" enumerations.
One problem is that there would be two notions of Enum'Class:
1. If Enum'Class covers only enumeration types derived from Enum using
the current Ada derivation method, then the set of literals is the same
for all types in Enum'Class. This both simplifies and limits what a
class-wide operation can do.
2. If Enum'Class covers also "deepened" enumeration types, then
different types in Enum'Class can have completely different sets of
literals. However, a class-wide operation can rely on the fact that each
literal in Enum corresponds to a range of literals in any type in
Enum'Class. There needs to be some way (an attribute function?) to map
an Enum value to the range within the actual type of the class-wide
parameter.
>> Another issue is that generic formal types of the "deepened" kind would be
>> needed. I think that would be the next point to work on for this proposal.
>
> We already have that. Generic derived types (with the ancestor being an
> enumeration) would provide the needed inheritance.
Not quite, I think, because that has the same limitations as the 1st
notion of Enum'Class, above.
--
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
. @ .
next prev parent reply other threads:[~2012-05-10 21:22 UTC|newest]
Thread overview: 312+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-25 7:47 What would you like in Ada202X? Martin
2012-04-25 8:01 ` Yannick Duchêne (Hibou57)
2012-04-25 8:30 ` stefan-lucks
2012-04-25 19:21 ` Adam Beneschan
2012-04-28 11:50 ` Yannick Duchêne (Hibou57)
2012-04-28 13:21 ` Yannick Duchêne (Hibou57)
2012-04-29 1:03 ` BrianG
2012-04-25 8:36 ` Jacob Sparre Andersen
2012-04-25 8:46 ` Yannick Duchêne (Hibou57)
2012-04-25 9:04 ` leonid
2012-04-25 11:30 ` Jacob Sparre Andersen
2012-04-26 2:00 ` Randy Brukardt
2012-04-26 13:10 ` AdaMagica
2012-04-26 15:49 ` anon
2012-04-27 0:26 ` Randy Brukardt
2012-04-25 9:10 ` Martin
2012-04-25 8:36 ` Dmitry A. Kazakov
2012-04-25 8:59 ` Yannick Duchêne (Hibou57)
2012-04-25 9:24 ` Dmitry A. Kazakov
2012-04-25 10:05 ` Yannick Duchêne (Hibou57)
2012-04-26 2:08 ` Randy Brukardt
2012-04-26 8:50 ` Dmitry A. Kazakov
2012-04-26 23:50 ` Randy Brukardt
2012-04-27 5:03 ` Yannick Duchêne (Hibou57)
2012-04-27 13:50 ` Robert A Duff
2012-04-27 23:25 ` Randy Brukardt
2012-04-28 6:32 ` Yannick Duchêne (Hibou57)
2012-04-27 7:56 ` Dmitry A. Kazakov
2012-04-27 13:56 ` Robert A Duff
2012-04-28 8:32 ` Dmitry A. Kazakov
2012-04-28 11:44 ` Yannick Duchêne (Hibou57)
2012-04-29 13:35 ` Robert A Duff
2012-04-29 15:59 ` Dmitry A. Kazakov
2012-04-29 19:27 ` Robert A Duff
2012-04-29 20:09 ` Dmitry A. Kazakov
2012-05-01 2:17 ` Randy Brukardt
2012-04-25 9:31 ` Dmitry A. Kazakov
2012-04-26 2:10 ` Randy Brukardt
2012-05-10 7:29 ` Gustaf Thorslund
2012-05-14 9:25 ` stefan-lucks
2012-05-14 12:19 ` Dmitry A. Kazakov
2012-05-14 13:09 ` Georg Bauhaus
2012-05-14 13:40 ` Dmitry A. Kazakov
2012-05-14 15:50 ` Georg Bauhaus
2012-05-14 20:24 ` Gustaf Thorslund
2012-05-14 22:49 ` tmoran
2012-05-15 6:15 ` Gustaf Thorslund
2012-04-25 9:09 ` Georg Bauhaus
2012-04-25 9:14 ` Yannick Duchêne (Hibou57)
2012-04-25 9:30 ` Dmitry A. Kazakov
2012-04-25 13:11 ` Marc C
2012-04-25 13:35 ` Georg Bauhaus
2012-04-25 13:36 ` Pascal Obry
2012-04-25 14:18 ` Yannick Duchêne (Hibou57)
2012-04-25 16:12 ` björn lundin
2012-04-25 17:36 ` Lucretia
2012-04-25 20:26 ` Yannick Duchêne (Hibou57)
2012-04-26 15:20 ` Simon Wright
2012-04-28 10:58 ` björn lundin
2012-04-26 12:37 ` Marc C
2012-04-25 18:14 ` Jeffrey Carter
2012-04-25 18:51 ` Dmitry A. Kazakov
2012-04-25 20:53 ` Yannick Duchêne (Hibou57)
2012-04-25 21:14 ` Jeffrey Carter
2012-04-25 21:27 ` Yannick Duchêne (Hibou57)
2012-04-25 21:30 ` Yannick Duchêne (Hibou57)
2012-04-25 22:33 ` Jeffrey Carter
2012-04-26 0:50 ` Yannick Duchêne (Hibou57)
2012-04-26 1:06 ` Jeffrey Carter
2012-04-28 11:02 ` okellogg
2012-04-28 11:48 ` Yannick Duchêne (Hibou57)
2012-04-29 13:43 ` Robert A Duff
2012-04-29 16:59 ` okellogg
2012-04-29 19:04 ` Robert A Duff
2012-04-29 19:32 ` Yannick Duchêne (Hibou57)
2012-04-29 19:37 ` Yannick Duchêne (Hibou57)
2012-04-29 19:55 ` Robert A Duff
2012-04-29 21:37 ` okellogg
2012-04-29 22:51 ` Robert A Duff
2012-04-26 2:23 ` Randy Brukardt
2012-04-26 8:25 ` Dmitry A. Kazakov
2012-04-26 23:58 ` Randy Brukardt
2012-04-27 7:23 ` Dmitry A. Kazakov
2012-04-27 22:42 ` Randy Brukardt
2012-04-28 7:53 ` Dmitry A. Kazakov
2012-04-28 11:40 ` Yannick Duchêne (Hibou57)
2012-04-28 11:51 ` Dmitry A. Kazakov
2012-05-01 2:32 ` Randy Brukardt
2012-04-27 7:41 ` Jacob Sparre Andersen
2012-04-27 15:33 ` Adam Beneschan
2012-04-29 7:57 ` J-P. Rosen
2012-04-29 17:32 ` Robert Love
2012-04-29 23:33 ` Shark8
2012-05-10 7:18 ` ytomino
2012-05-10 15:25 ` Adam Beneschan
2012-05-10 15:51 ` ytomino
2012-05-10 17:09 ` Adam Beneschan
2012-05-10 18:25 ` ytomino
2012-04-25 12:13 ` Georg Bauhaus
2012-04-25 16:41 ` tmoran
2012-04-25 13:10 ` Nicholas Paul Collin Gloucester
2012-04-25 18:10 ` Zhu Qun-Ying
2012-04-25 18:07 ` okellogg
2012-04-25 19:15 ` Adam Beneschan
2012-04-25 20:12 ` okellogg
2012-04-25 20:26 ` Jeffrey Carter
2012-04-25 21:09 ` Yannick Duchêne (Hibou57)
2012-04-25 21:11 ` Martin Dowie
2012-04-25 22:18 ` Georg Bauhaus
2012-04-26 2:36 ` Randy Brukardt
2012-04-25 20:40 ` Adam Beneschan
2012-04-25 22:05 ` okellogg
2012-04-25 23:13 ` Adam Beneschan
2012-04-26 1:46 ` Brad Moore
2012-04-26 2:41 ` Randy Brukardt
2012-04-26 7:43 ` Mart van de Wege
2012-04-26 8:46 ` Georg Bauhaus
2012-04-26 14:57 ` Mart van de Wege
2012-04-26 15:28 ` Adam Beneschan
2012-04-26 18:16 ` Jeffrey Carter
2012-04-26 21:41 ` Mart van de Wege
2012-04-26 22:01 ` Jeffrey Carter
2012-04-25 20:19 ` Jeffrey Carter
2012-04-25 21:05 ` Yannick Duchêne (Hibou57)
2012-04-26 2:33 ` Randy Brukardt
2012-04-25 18:24 ` Jeffrey Carter
2012-04-25 19:02 ` Dmitry A. Kazakov
2012-04-25 19:02 ` Oliver Kleinke
2012-04-25 19:27 ` Dmitry A. Kazakov
2012-04-25 20:50 ` Georg Bauhaus
2012-04-26 8:15 ` Oliver Kleinke
2012-04-26 9:16 ` Jacob Sparre Andersen
2012-04-26 9:16 ` Georg Bauhaus
2012-04-25 21:17 ` Yannick Duchêne (Hibou57)
2012-04-26 8:18 ` Oliver Kleinke
2012-04-25 22:14 ` ytomino
2012-04-26 0:37 ` Yannick Duchêne (Hibou57)
2012-04-26 2:52 ` Randy Brukardt
2012-04-26 15:19 ` Adam Beneschan
2012-04-26 15:55 ` Dmitry A. Kazakov
2012-04-27 2:38 ` ytomino
2012-04-27 8:09 ` Georg Bauhaus
2012-04-27 8:19 ` Dmitry A. Kazakov
2012-04-27 9:46 ` Georg Bauhaus
2012-04-27 10:05 ` Dmitry A. Kazakov
2012-04-27 11:04 ` Georg Bauhaus
2012-04-27 12:10 ` Dmitry A. Kazakov
2012-04-26 4:12 ` ytomino
2012-04-26 8:44 ` Dmitry A. Kazakov
2012-04-26 11:22 ` Yannick Duchêne (Hibou57)
2012-04-26 13:17 ` Dmitry A. Kazakov
2012-04-27 0:09 ` Randy Brukardt
2012-04-27 5:23 ` Yannick Duchêne (Hibou57)
2012-04-27 22:49 ` Randy Brukardt
2012-04-27 7:31 ` Dmitry A. Kazakov
2012-04-27 22:46 ` Randy Brukardt
2012-04-28 8:41 ` Dmitry A. Kazakov
2012-04-25 22:30 ` Shark8
2012-04-26 0:42 ` Yannick Duchêne (Hibou57)
2012-04-26 9:29 ` gautier_niouzes
2012-04-26 11:27 ` Yannick Duchêne (Hibou57)
2012-04-26 13:19 ` Dmitry A. Kazakov
2012-04-30 22:38 ` gautier_niouzes
2012-04-27 0:18 ` sbelmont700
2012-04-27 16:04 ` Shark8
2012-04-27 21:11 ` sbelmont700
2012-04-27 23:18 ` Randy Brukardt
2012-04-27 23:40 ` sbelmont700
2012-04-28 2:17 ` Adam Beneschan
2012-04-28 8:03 ` Dmitry A. Kazakov
2012-04-29 3:20 ` Shark8
2012-04-29 15:42 ` sbelmont700
2012-04-29 23:29 ` Shark8
2012-04-30 2:00 ` sbelmont700
2012-04-27 23:03 ` Randy Brukardt
2012-04-27 5:10 ` Nasser M. Abbasi
2012-04-27 5:36 ` Yannick Duchêne (Hibou57)
2012-04-27 10:59 ` Martin
2012-04-27 17:05 ` Simon Wright
2012-04-30 7:28 ` Martin
2012-05-01 2:45 ` Randy Brukardt
2012-05-01 7:28 ` Martin
2012-05-01 17:15 ` Shark8
2012-05-01 18:13 ` Jeffrey Carter
2012-05-01 19:30 ` Dmitry A. Kazakov
2012-05-01 20:23 ` Robert A Duff
2012-05-01 21:53 ` tmoran
2012-05-01 22:05 ` Adam Beneschan
[not found] ` <JYOdnei1xPFt8D3SnZ2dnUVZ_qudnZ2d@earthlink.com>
2012-05-02 4:28 ` Shark8
2012-05-02 8:18 ` Martin
2012-05-02 12:57 ` Shark8
2012-05-08 17:45 ` Martin Dowie
2012-05-03 15:30 ` gautier_niouzes
2012-05-03 15:58 ` Yannick Duchêne (Hibou57)
2012-05-04 7:25 ` Martin
2012-05-01 16:23 ` Simon Wright
2012-04-29 3:52 ` Shark8
2012-04-29 7:13 ` Dmitry A. Kazakov
2012-04-29 9:17 ` gautier_niouzes
2012-04-27 15:33 ` mjsilva
2012-04-28 1:38 ` BrianG
2012-05-01 15:04 ` mjsilva
2012-04-30 6:28 ` Michael Rohan
2012-04-30 6:40 ` Michael Rohan
2012-04-30 8:27 ` Yannick Duchêne (Hibou57)
2012-05-06 18:48 ` Niklas Holsti
2012-05-06 19:27 ` Simon Wright
2012-05-06 20:47 ` Niklas Holsti
2012-05-06 19:28 ` Dmitry A. Kazakov
2012-05-06 20:06 ` Yannick Duchêne (Hibou57)
2012-05-06 21:26 ` Niklas Holsti
2012-05-07 7:49 ` Dmitry A. Kazakov
2012-05-07 23:18 ` Niklas Holsti
2012-05-08 9:03 ` Dmitry A. Kazakov
2012-05-08 19:20 ` Niklas Holsti
2012-05-08 19:44 ` Niklas Holsti
2012-05-09 8:02 ` Dmitry A. Kazakov
2012-05-10 0:47 ` Randy Brukardt
2012-05-13 19:53 ` Niklas Holsti
2012-05-15 6:30 ` Randy Brukardt
2012-05-15 7:58 ` Dmitry A. Kazakov
2012-05-16 0:05 ` Randy Brukardt
2012-05-17 19:48 ` Niklas Holsti
2012-05-18 4:28 ` Randy Brukardt
2012-05-17 14:40 ` Niklas Holsti
2012-05-17 17:12 ` Dmitry A. Kazakov
2012-05-07 6:33 ` ytomino
2012-05-07 22:34 ` Niklas Holsti
2012-05-08 0:48 ` Randy Brukardt
2012-05-08 6:30 ` Niklas Holsti
2012-05-08 22:11 ` Randy Brukardt
2012-05-08 22:22 ` Randy Brukardt
2012-05-09 7:18 ` Dmitry A. Kazakov
2012-05-10 0:30 ` Randy Brukardt
2012-05-10 7:44 ` Dmitry A. Kazakov
2012-05-10 21:22 ` Niklas Holsti [this message]
2012-05-11 7:39 ` Dmitry A. Kazakov
2012-05-12 0:11 ` Randy Brukardt
2012-05-15 21:35 ` Niklas Holsti
2012-05-16 0:19 ` Randy Brukardt
2012-05-17 22:01 ` Niklas Holsti
2012-05-18 4:35 ` Randy Brukardt
2012-05-16 7:39 ` Dmitry A. Kazakov
2012-05-10 6:45 ` ytomino
2012-05-15 21:52 ` Niklas Holsti
2012-07-03 15:41 ` Pascal Obry
2012-07-03 15:50 ` Pascal Obry
2012-07-04 11:41 ` Ada novice
2012-07-04 12:30 ` Nasser M. Abbasi
2012-07-04 17:05 ` shai.lesh
2012-07-04 17:55 ` Simon Wright
2012-07-04 18:35 ` Nasser M. Abbasi
[not found] ` <0o59v7djiffnl7sqdpp2uiso78oa9hb8sb@invalid.netcom.com>
2012-07-04 20:34 ` shai.lesh
2012-07-04 22:26 ` Simon Wright
[not found] ` <j5p9v7l646mlk9m073u4m69dg3gjfjblfm@invalid.netcom.com>
2012-07-05 7:53 ` shai.lesh
2012-07-05 8:18 ` Simon Wright
2012-07-06 0:48 ` John B. Matthews
2012-07-05 8:30 ` georg bauhaus
2012-07-05 11:57 ` shai.lesh
2012-07-05 12:11 ` Nasser M. Abbasi
2012-07-05 12:21 ` Nasser M. Abbasi
2012-07-05 13:07 ` shai.lesh
2012-07-05 14:08 ` Nasser M. Abbasi
2012-07-05 15:51 ` Ada novice
2012-07-05 15:55 ` johnscpg
2012-07-05 16:57 ` Simon Wright
2012-07-05 17:36 ` shai.lesh
2012-07-06 12:07 ` Ada novice
2012-07-06 15:29 ` Simon Wright
2012-07-12 6:02 ` Egil Høvik
2012-07-12 8:29 ` Simon Wright
2012-07-12 9:00 ` Egil Høvik
2012-07-12 12:44 ` Georg Bauhaus
2012-07-12 13:20 ` Egil Høvik
2012-07-12 15:53 ` Adam Beneschan
2012-07-12 16:34 ` Dmitry A. Kazakov
2012-07-12 17:35 ` Georg Bauhaus
2012-07-19 6:44 ` David Thompson
2012-07-19 18:22 ` Simon Wright
2012-07-20 6:20 ` Georg Bauhaus
2012-07-27 19:49 ` Ada novice
2012-07-12 9:47 ` Nasser M. Abbasi
2012-05-10 13:13 ` Martin
2012-05-18 9:56 ` Marius Amado-Alves
2012-06-04 8:10 ` Yannick Duchêne (Hibou57)
2012-06-11 21:54 ` Yannick Duchêne (Hibou57)
2012-06-29 11:29 ` joachim.schroeer
2012-06-29 11:54 ` AdaMagica
2012-06-29 12:42 ` stefan-lucks
2012-06-29 15:12 ` Adam Beneschan
2012-07-03 0:47 ` Randy Brukardt
2012-06-29 12:13 ` Dmitry A. Kazakov
2012-06-29 22:37 ` Robert A Duff
2012-06-30 12:00 ` Brian Drummond
2012-06-30 12:34 ` Dmitry A. Kazakov
2012-06-30 17:00 ` Brian Drummond
2012-06-30 18:43 ` Dmitry A. Kazakov
2012-06-30 21:06 ` Brian Drummond
2012-07-01 8:17 ` Oliver Kellogg
2012-07-01 8:28 ` Pascal Obry
2012-07-01 8:25 ` Dmitry A. Kazakov
2012-07-01 10:57 ` Brian Drummond
2012-07-01 12:46 ` Dmitry A. Kazakov
2012-07-03 0:53 ` Randy Brukardt
2012-06-30 15:51 ` Robert A Duff
2012-06-30 17:37 ` Brian Drummond
2012-06-30 18:09 ` Robert A Duff
2012-06-30 18:26 ` Niklas Holsti
2012-07-01 10:47 ` Brian Drummond
2012-07-13 8:07 ` Martin
2012-07-13 11:04 ` Pascal Obry
2012-07-13 11:13 ` Martin
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox