comp.lang.ada
 help / color / mirror / Atom feed
From: stt@henning.camb.inmet.com (Tucker Taft)
Subject: Re: Ada.strings.bounded problems?
Date: Sun, 22 Jan 1995 18:05:43 GMT
Date: 1995-01-22T18:05:43+00:00	[thread overview]
Message-ID: <D2tJLK.49A@inmet.camb.inmet.com> (raw)
In-Reply-To: 1995Jan18.164836.2222@nbivax.nbi.dk

In article <1995Jan18.164836.2222@nbivax.nbi.dk>,
Jacob Sparre Andersen <sparre@meyer.fys.ku.dk> wrote:

>Mats Weber (Mats.Weber@matrix.ch) wrote:
>| In article <3fduto$ta7@watnews1.watson.ibm.com>, 
>| ncohen@watson.ibm.com wrote:
>| >    function "=" (Left, Right: Bounded_String) return Boolean is ...
>|
>| This helps some, but still has severe problems. For instance if I write
>|
>|    type Pair is
>|       record
>|          First,
>|          Second : Bounded_String;
>|       end record;
>|
>| then "=" is broken for Pair. This situation is very bad because overriding
>| "=" on Bounded_String gives the programmer the feeling that the problem is
>| solved, but it reappears whenever a Bounded_String is used as a component
>| of a composite type.
>|__________
>
>It this really true? I would say that if it is, it a serious problem with 
>Ada.

This is true for untagged types, for upward compatibility reasons.
In general in Ada 83, predefined operators "reemerge" under certain
contexts (e.g. in a generic on the formal type, or in a composite operation
such as "<" on an array).  The reason for the reemergence can be traced
both to semantic and implementation difficulties associated with
disallowing reemergence.  For example, when a predefined operator
of an untagged type is overridden, the overriding need not necessarily
conform exactly to the original operators profile, nor satisfy the original
operator's semantic properties (as might be expected by a generic unit).

For tagged types, once "=" is overridden, the predefined operator will
never "reemerge," neither in generics nor in a composite operation such
as "=" on an array, record, or type extension.  Exact "subtype" conformance 
is required when overriding "=" on a tagged type (or when overriding any 
inherited primitive operation on a tagged type).

This distinction should be remembered when deciding whether to make a given
abstract type tagged or not.  In general, if the programmer wants complete 
control over a type, the type will need to be tagged (and perhaps also 
"controlled").

As pointed out by others, providing a default initialization for 
the "tail" of an array is an alternative way to avoid any problems 
associated with "partially" initialized nested arrays.

>Regards,
>                Jacob Sparre Andersen

S. Tucker Taft   stt@inmet.com
Ada 9X Mapping/Revision Team
Intermetrics, Inc.
Cambridge, MA  02138



  parent reply	other threads:[~1995-01-22 18:05 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <TARJEIJ.95Jan11183331@ulrik.uio.no>
1995-01-12 14:24 ` Ada.strings.bounded problems? Robert Dewar
1995-01-12 15:59 ` Norman H. Cohen
1995-01-13 19:33   ` Mats Weber
     [not found] ` <EACHUS.95Jan11170317@spectre.mitre.org>
1995-01-12 18:10   ` Robert Dewar
     [not found] ` <D29L78.J9@nntpa.cb.att.com>
1995-01-12 18:16   ` Norman H. Cohen
1995-01-13 10:52     ` Tarjei Jensen
1995-01-13 19:29     ` Mats Weber
     [not found]       ` <3fduto$ta7@watnews1.watson.ibm.com>
     [not found]         ` <Mats.Weber-1701951908250001@mlma11.matrix.ch>
1995-01-18 14:27           ` Norman H. Cohen
1995-01-19 16:49             ` Mats Weber
1995-01-21  5:28               ` Robert Dewar
     [not found]             ` <1995Jan19.124412@lglsun.epfl.ch>
1995-01-19 21:59               ` Norman H. Cohen
1995-01-23 15:56                 ` Mats Weber
1995-01-24 18:49                   ` Robert A Duff
1995-01-24 19:24                   ` Robert Dewar
1995-01-25 17:26                     ` Norman H. Cohen
     [not found]                     ` <Mats.Weber-2701952307410001@mlma11.matrix.ch>
1995-01-30 14:15                       ` David Emery
1995-02-01 14:02                         ` William Brennan
1995-02-01 14:28                           ` William Brennan
1995-02-01 20:46                           ` Robert Firth
     [not found]                             ` <3gr5b4$1eq2@info4.rus.uni-stuttgart.de>
     [not found]                               ` <D3H6qD.AD6@inmet.camb.inmet.com>
1995-02-07 20:22                                 ` Norman H. Cohen
1995-02-11 15:58                                   ` David Weller
1995-02-01 21:48                           ` Mark A Biggar
     [not found]                           ` <3grvi1$jvm@gnat.cs.nyu.edu>
1995-02-08 15:22                             ` Passive tasks (was: bounded strings) Schilling J.
1995-02-10  1:51                               ` Robert Dewar
1995-01-20 17:00               ` Ada.strings.bounded problems? Robert Dewar
1995-01-18 16:23           ` Cyrille Comar
1995-01-18 17:48           ` Robert Dewar
1995-01-19  1:36           ` Keith Thompson
1995-01-19 17:53             ` Jacob Sparre Andersen
1995-01-20 11:12               ` Robb Nebbe
1995-01-20 16:03                 ` Magnus Kempe
1995-01-21 18:57                   ` Robert Dewar
1995-01-23 13:37                     ` Robb Nebbe
1995-01-24 14:38                       ` Robert Dewar
1995-01-24 19:24                       ` Tucker Taft
1995-01-25 10:25                         ` Robb Nebbe
     [not found]                         ` <Mats.Weber-2701952308000001@mlma11.matrix.ch>
1995-01-29  5:29                           ` Robert Dewar
     [not found]           ` <1995Jan18.164836.2222@nbivax.nbi.dk>
1995-01-22 18:05             ` Tucker Taft [this message]
1995-01-12 22:17   ` Robert Dewar
     [not found]     ` <D2D8DC.JvM@nntpa.cb.att.com>
     [not found]       ` <3fja22$fab@source.asset.com>
1995-01-18 18:02         ` Norman H. Cohen
1995-01-20  5:12         ` Robert Dewar
     [not found]   ` <D2J8H0.DMu@aplcenmp.apl.jhu.edu>
1995-01-18  5:01     ` Robert Dewar
1995-01-22 18:09     ` Tucker Taft
replies disabled

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