comp.lang.ada
 help / color / mirror / Atom feed
From: "Samuel T. Harris" <sam_harris@hso.link.com>
Subject: Re: One type for all
Date: 1999/07/12
Date: 1999-07-12T00:00:00+00:00	[thread overview]
Message-ID: <378A6F37.DDF7FF99@hso.link.com> (raw)
In-Reply-To: 7mdobd$fu$1@nnrp1.deja.com

Robert Dewar wrote:
> 
> In article <3786741C.E73F1124@hso.link.com>,
>   "Samuel T. Harris" <sam_harris@hso.link.com> wrote:
> 
> > Types in both Ada 83 and Ada 95 use name-equivalence instead
> > of structural-equivalence (as is found in Pascal).
> 
> Am I really misremembering Pascal that badly. Surely Pascal
> has name equivalence, e.g. if you declare two identical
> record types with different names, they are different types.
> I think you are confusing name/structural equivalence with the
> different rules in Pascal about compatibility of types.
> 
> But perhaps I am remembering wrong ...
> 
> I'm on vacation so my Pascal texts are out of reach :-)
> 
> Sent via Deja.com http://www.deja.com/
> Share what you know. Learn what you don't.

I refer to the way type structures can be built directly
in an variable declaration. The only Ada 83 equivalent is
the anonymous array type used in an object declaration
and which has special rules which specifies each as a
separate type. In Ada, a pointer to an array of records
involves at least three type declarations and then
an object declaration using the last access type.
In Pascal, the object can be declared directly when
all the type structure in one "line" of code.

What does it mean in Pascal when two objects are declared
using the same type structures? Unfortunately, the
original Pascal rules did not deal with this situation.

Some implementations choose to create internal type names
for each such usage. Others did not. This resulting in some
implementations enforcing named-equivalence and some
allowing the more looser structural-equivalence.

Two records with different names _are_ different types.
Two objects with the same record structure in their
declaration is not so clear. As I recall my college
days, the greatest occurance of this "feature" was
declaring objects as pointers to things instead of
declaring a pointer type and using that. If three
objects are declared as pointers to the same type,
are the three objects of the same type? Depends
on the implementation.

-- 
Samuel T. Harris, Principal Engineer
Raytheon, Scientific and Technical Systems
"If you can make it, We can fake it!"




  reply	other threads:[~1999-07-12  0:00 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <3783E0D2.5D74243@boeing.com>
1999-07-08  0:00 ` One type for all czgrr
1999-07-09  0:00 ` Samuel T. Harris
1999-07-10  0:00   ` Ehud Lamm
1999-07-12  0:00     ` Samuel T. Harris
1999-07-12  0:00   ` Robert Dewar
1999-07-12  0:00     ` Samuel T. Harris [this message]
1999-07-12  0:00     ` Larry Kilgallen
1999-07-17  0:00       ` Robert Dewar
1999-07-18  0:00         ` Samuel T. Harris
1999-07-18  0:00         ` Keith Thompson
1999-07-19  0:00           ` Robert Dewar
1999-07-18  0:00             ` Keith Thompson
1999-07-19  0:00             ` Tucker Taft
1999-07-19  0:00             ` Robert A Duff
1999-07-20  0:00               ` Robert Dewar
1999-07-20  0:00             ` Bill Findlay
replies disabled

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