From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: What would you like in Ada202X?
Date: Fri, 11 May 2012 19:11:44 -0500
Date: 2012-05-11T19:11:44-05:00 [thread overview]
Message-ID: <jok9s5$hgt$1@munin.nbi.dk> (raw)
In-Reply-To: a12psmFskuU1@mid.individual.net
"Niklas Holsti" <niklas.holsti@tidorum.invalid> wrote in message
news:a12psmFskuU1@mid.individual.net...
> 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:
>> ...
>> 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.
You are thinking like a language lawyer, much less like a user (something
I'm often accused of!). I'm not paying all that much attention to the
details of your proposal, but rather trying to look at it as a user would.
In that case, both mechanisms give a way to add/change enumeration literals
for an existing enumeration type. I think that's the capability that users
would want -- and I doubt that they care particularly much how it is
accomplished.
Of course, the details do matter at some point, but given that it's a number
of years before any of this stuff will be worked on very seriously, I'm
trying to look at the broad view now.
...
>>>> 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.
If we suddenly have class-wide programming for enumerations, it would be mad
to not allow it for other, similar types.
> Is there an AI on that? I looked for one, but did not find any.
Not really, although I mentioned an off-the-wall proposal for Strings that
in an AI in another message from Wednesday.
...
>>> 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?
I was thinking of derived untagged types; I should have said that.
The issue is that there is virtually no difference between a derived type
and two unrelated types with conversion functions. If you call the
conversion functions "+" (as some people recommend), you're required to
write one whole additional character when using two unrelated types. It's
hard to imagine designing the huge mechanism of derived types (with all of
its weird problems and compatibility issues) in order to say typing one
character per use. (One could even say that the extra typing makes the
program more understandable, I'm not sure I'd go that far.)
The only thing that you can get from derived types that can't be done any
other way is inherit operations (and their interfaces). And that's just
short of useless in Ada; the only use you can make of that is via generic
derived types. (Moreover, once you add operations to untagged derived types,
you can no longer specify their representation, meaning that using them
forces you to give up another key Ada feature.)
That led me to say:
...
>>> 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.
Randy.
next prev parent reply other threads:[~2012-05-12 0:11 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
2012-05-11 7:39 ` Dmitry A. Kazakov
2012-05-12 0:11 ` Randy Brukardt [this message]
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