From: Vincent Marciante <marciant_remove@li.net>
Subject: Re: Overridability of _private_ predefined "=" [was Re: list strawman]
Date: Sat, 19 Jan 2002 11:58:44 -0500
Date: 2002-01-19T11:58:44-05:00 [thread overview]
Message-ID: <3C49A5C4.51D6@li.net> (raw)
In-Reply-To: 3C47E79E.7844@li.net
> Christoph Grein wrote:
> Please, before going into further discussions about reemergence of predefined
> operations and thinking about changing the language, read the corresponding
> chapters in the AARM (the Annotated Ada Reference Manual), e.g.
> AARM 4.5.2(24a-c).
I have read that.
> With respect to "block compare",
I'm sorry, I think that I should have said 'usage of predefined "="
for composite types that have componants of a private type'.
> this is not possible for tagged types, floating
> point types if there are signed zeros, and who knows for which other cases.
So, in addition to what Mark Lundquist wrote:
Mark Lundquist wrote:
>
> >
> > generic
> > type Element is private;
> > with function "=" (Left, Right : Element) return Boolean is <>;
> > package Containers.Lists.Unbounded is
> >
> > This allows users who have unconventional ideas of equality to provide
> > their own routine, without requiring "normal" users to specify the
> > equality function explicitly.
>
> Indeed it's a bug in Ada95 if the generic uses "=" without importing it
> explicitly. Otherwise, an overridden "=" is not visible to the generic, and
> predefined equality "reemerges".
it seems to also be a bug in Ada95 if the generic uses predefined "=" of
any composite types that have componants whose type is that of an
imported
private type. Right?
> Thus it is generally a bad idea to override predefined operators for non-tagged
> types. If this is really necessary, then utmost care has to be applied
> everywhere such a type is used (e.g. as components of an array).
This is why I find the situation to be so bad now. A generic written
for Ada 83 that only imports a private type can not be made into a valid
Ada 95 one by simply transforming its spec by adding the importation of
"=" for that type; Its body must also be analyzed and possibly changed
so as to use componant by componant comparison for any composite types
having the private type as a componant (or predefined "=" has to be
overridden for those composite types _and_ any other composite types the
have those composite types as componants.)
What was impossible (?) to do wrong in Ada 83 has now become a pitfall
in Ada 95. were by we have to dilligently follow the verbal guideline
that you just suggested.
> Reemergence has been introduced in the first place to avoid incompatibilities
> with Ada83.
I have read this but I have not seen the statement of the
incompatibilities that were avoided. Can someone point me to that
information?
I must really be missing something (and I do want to understand what it
is if I am.)
>
>Christoph Grein
>
> Vincent Marciante wrote:
>> Its even worse than just that. Now a "block compare" of any composite
>> type
>> that has a nontagged private type as a componant is questional because
>> that
>> comparison will utilize the predefined "=" of the private type even
>> though
>> the creator of the private type may have seen it proper to overridden
>> it.
>>
>> There was a thread, gosh, I guess less than two years ago where I was
>> trying to
>> argue that this was a disaster wrt generics and that reemergence of "="
>> seemed
>> to be a special case wrt the whole reemergence issue. I now feel that
>> the
>> situation is very bad in general as opposed to being bad only wrt
>> generics.
>>
>> Does anyone think that it would be good for there to be a change in the
>> language such that for private types, if a primative "=" returning
>> boolean exists then it
>> should be the "=" used as part of block compares and that the predefined
>> one
>> should not reemerge in generics? This would not have been incompatible
>> with
>> Ada83, right?
>>
>> I hope that the above is not perceved as rehashing old arguments - I do
>> not
>> remember the issues having been discussed exactly as above.
>>
>> Vincent Marciante
next prev parent reply other threads:[~2002-01-19 16:58 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-01-06 20:55 list strawman Stephen Leake
2002-01-07 15:56 ` Ted Dennison
2002-01-07 15:57 ` Ted Dennison
2002-01-07 16:33 ` Stephen Leake
2002-01-07 16:37 ` Stephen Leake
2002-01-07 19:31 ` Ted Dennison
2002-01-07 19:26 ` Ted Dennison
2002-01-07 22:05 ` Stephen Leake
2002-01-07 22:51 ` Ted Dennison
2002-01-08 0:48 ` Steven Deller
2002-01-08 15:32 ` Ted Dennison
2002-01-08 15:43 ` Jean-Marc Bourguet
2002-01-08 17:07 ` Ted Dennison
2002-01-08 17:21 ` Jean-Marc Bourguet
2002-01-08 19:12 ` Ted Dennison
2002-01-09 8:09 ` Jean-Marc Bourguet
2002-01-09 18:37 ` Ted Dennison
2002-01-11 9:37 ` Jean-Marc Bourguet
2002-01-11 17:03 ` Ted Dennison
2002-01-11 17:47 ` Jeffrey Carter
2002-01-12 15:10 ` Jean-Marc Bourguet
2002-01-13 10:18 ` Jean-Marc Bourguet
2002-01-14 16:02 ` Ted Dennison
2002-01-14 16:22 ` Jean-Marc Bourguet
2002-01-08 19:57 ` Steven Deller
2002-01-08 19:54 ` Steven Deller
2002-01-08 19:54 ` Steven Deller
2002-01-08 20:46 ` Ted Dennison
2002-01-08 21:21 ` Stephen Leake
2002-01-08 21:49 ` Ted Dennison
2002-01-09 9:21 ` Thomas Wolf
2002-01-09 15:20 ` Ted Dennison
2002-01-09 15:53 ` Stephen Leake
2002-01-09 21:21 ` Ted Dennison
2002-01-09 17:42 ` Mark Lundquist
2002-01-09 21:02 ` Jeffrey Carter
2002-01-10 8:47 ` Thomas Wolf
2002-01-11 17:38 ` Jeffrey Carter
2002-01-11 21:52 ` Chad Robert Meiners
2002-01-12 5:45 ` Jeffrey Carter
2002-01-12 22:20 ` Chad R. Meiners
2002-01-13 17:03 ` Jeffrey Carter
2002-01-13 23:47 ` Chad R. Meiners
2002-01-14 1:32 ` Ted Dennison
2002-01-14 5:12 ` Jeffrey Carter
2002-01-14 5:12 ` Jeffrey Carter
2002-01-10 14:39 ` Ted Dennison
2002-01-11 5:34 ` Mark Biggar
2002-01-12 12:20 ` Simon Wright
2002-01-14 14:53 ` Matthew Heaney
2002-01-16 5:56 ` Simon Wright
2002-01-18 9:15 ` Overridability of _private_ predefined "=" [was Re: list strawman] Vincent Marciante
2002-01-19 16:58 ` Vincent Marciante [this message]
2002-01-19 22:42 ` Nick Roberts
2002-01-09 3:10 ` list strawman Ted Dennison
2002-01-09 19:09 ` Ted Dennison
2002-01-08 21:26 ` Georg Bauhaus
2002-01-08 22:13 ` Ted Dennison
2002-01-09 20:52 ` Jeffrey Carter
2002-02-17 15:04 ` Florian Weimer
2002-02-17 15:05 ` Florian Weimer
2002-02-18 1:43 ` Stephen Leake
2002-02-18 8:57 ` Florian Weimer
-- strict thread matches above, loose matches on Subject: below --
2002-01-18 10:43 Overridability of _private_ predefined "=" [was Re: list strawman] Christoph Grein
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox